BufferedWriter
为什么比用FileReader每次读一个字符数组高效?FileReader
每次读一个字符数组不是缓冲吗?
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` 会相对更高效。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。