Java IO 之 BufferedReader BufferedWriter 通过缓冲区实现字符文本文件的复制

通过读文件和写文件都使用缓存 BufferedReader 和 BufferedWriter ,使得读写的效率都得到了提高。
以下是简单使用这2个缓冲类来实现复制一个文件的过程。
和使用FileReader和FileWriter是一样样的。只是原来我们自己要写个字符数组来实现缓冲的目的,现在可以直接使用jdk给的缓冲来实现复制文件的效率提升。

package com.lxk.FileTest;

import java.io.*;

/**
 * 通过缓冲区复制一个文件
 */
class CopyTextByBuf {
    public static void main(String[] args) {
        //读文件流的缓存
        BufferedReader bufr = null;
        //写文件流的缓存
        BufferedWriter bufw = null;

        try {
            bufr = new BufferedReader(new FileReader("D:/BufferedWriterDemo.java"));
            bufw = new BufferedWriter(new FileWriter("E:/BufferedWriterDemo.txt"));

            String line;//读缓存和写缓存之间交流的桥梁
            while ((line = bufr.readLine()) != null) {
                bufw.write(line);
                bufw.newLine();//写文件时,添加换行符。为什么呢?看下面解释。
                bufw.flush();
            }
        } catch (IOException e) {
            throw new RuntimeException("读写失败");
        } finally {
            try {
                if (bufr != null)
                    bufr.close();
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
            try {
                if (bufw != null)
                    bufw.close();
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
        }
    }
}

BufferedReader.readLine()方法注意:

功能:
读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
返回:
包含该行内容的字符串,不包含任何行终止符(即"\r"、"\n"、"\r\n"),如果已到达流末尾,则返回 null
每次读取都是返回这次读取到的一行文本的字符串,读,是一个字符一个字符的读,然后当读到"\r"或者"\n"或者"\r\n"这一行的读取就结束了。把前面的n个字符合并成一个String返回,而且这个"\r"或者"\n"或者"\r\n"是不会在返回的字符串当中。所以,你再把读入的字符流写出去的话,就缺少了换行符。所以,得添加个换行符。







评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值