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

来源:互联网 发布:cisco端口聚合lacp 编辑:程序博客网 时间:2024/05/16 15:53

通过读文件和写文件都使用缓存 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"是不会在返回的字符串当中。所以,你再把读入的字符流写出去的话,就缺少了换行符。所以,得添加个换行符。







0 0
原创粉丝点击