107.Java中IO流_字符流的缓冲区

字符流的缓冲区

查看Reader 发现Reader,操作的是字符,我们就不需要进行编码解码操作,由字符流读到二进制,自动进行解码得到字符,写入字符自动编码成二进制.

Reader有一个子类BufferedReader。子类继承父类显然子类可以重写父类的方法,也可以增加自己的新方法。例如一次读一行就是常用的操作.那么BufferedReader 类就提供了这个方法,可以查看readLine()方法具备 一次读取一个文本行的功能。很显然,该子类可以对功能进行增强。

体验BufferedReader

public class IoTest_BufferedReader {
    public static void main(String[] args) throws IOException {
        readFile("c:\a.txt");
    }

    private static void readFile(String path) throws IOException {
        Reader read = new FileReader(path);

        BufferedReader br = new BufferedReader(read);
        
        String line = null;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }

    }
}

注意:

在使用缓冲区对象时,要明确,缓冲的存在是为了增强流的功能而存在,所以在建立缓冲区对象时,要先有流对象存在.

缓冲区的出现提高了对流的操作效率。原理:其实就是将数组进行封装。

使用字符流缓冲区拷贝文本文件.

public class Demo7 {
    public static void main(String[] args) throws IOException {
        // 关联源文件
        File srcFile = new File("c:\linux大纲.txt");
        // 关联目标文件
        File destFile = new File("d:\linux大纲.txt");
        // 实现拷贝
        copyFile(srcFile, destFile);

    }

    private static void copyFile(File srcFile, File destFile)
            throws IOException {
        // 创建字符输入流
        FileReader fr = new FileReader(srcFile);
        // 创建字符输出流
        FileWriter fw = new FileWriter(destFile);

        // 字符输入流的缓冲流
        BufferedReader br = new BufferedReader(fr);
        // 字符输出流的缓冲流
        BufferedWriter bw = new BufferedWriter(fw);

        String line = null;
        // 一次读取一行
        while ((line = br.readLine()) != null) {
            // 一次写出一行.
            bw.write(line);
            // 刷新缓冲
            bw.flush();
            // 进行换行,由于readLine方法默认没有换行.需要手动换行
            bw.newLine();
        }
        // 关闭流
        br.close();
        bw.close();
    }
}
author@nohert
原文地址:https://www.cnblogs.com/gzgBlog/p/13624617.html