BufferedReader,BufferedWriter 为什么比 FileReader 和 FileWriter高效



FileReader fileReader   = new FileReader("xxx");
FileReader.read();
FileReader.read(char[] cbuf); 
FileReader.read(char[] cbuf,int off, int len);
中 cbuf 的意思

FileReader 类的 read 方法三种重载形式
第一种直接读一个字符
第二种读取全部内容到 cbuf 数组中
第三种读取是指从文件off位置读入len这么长的字符串到char数组内
但这三种都是这是通过 IO 读取的内容
读一次,从 IO 获取一次数据



而 BufferedReader
BufferedReader bufReader   = new BufferedReader(new FileReader("xxx"));
bufReader.read(char[] cbuf)
bufReader.read(char[] cbuf,int off, int len)
包装 FileReader 之后
它的 read 方法把数据读到 cbuf 内
就不是单纯通过 IO 了
public BufferedReader(Reader in, int sz)
构造函数本身可以接受 sz 来设置缓存大小
默认是 8192 (8k)
它开始会先从 IO 读取 8k 内容到自己设置的内存缓冲区内

调用 bufReader.read 方法时
会从 BufferedReader 缓存区中读取内容
避免每次 read 都通过 IO
实际上减少了 IO 访问次数。

同理
BufferedWriter 和 FileWriter 一样如此
因此
BufferedWriter BufferedReader 会相对更高效。
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页