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 会相对更高效。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值