BufferedReader高效的原因(javaAPI)

作者:貘吃馍香
链接:https://www.zhihu.com/question/29351698/answer/44192440
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

好久(>6年)没写JAVA了
查了下 JAVA 手册大致明白了楼主是要问什么

先说结论
其实就如同

@RednaxelaFX

说的一样
减少 IO 次数。
IO 访问是个慢操作
减少 IO 次数就是提高效率

 


再说原因:
貌似楼主混淆了

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 会相对更高效

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值