开发者社区> 问答> 正文

java中为什么BufferedWriter 要比 FileReader高效?

BufferedWriter 为什么比用FileReader每次读一个字符数组高效?
FileReader每次读一个字符数组不是缓冲吗?

展开
收起
蛮大人123 2016-03-20 18:43:28 3128 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪
    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` 会相对更高效。

    2019-07-17 19:09:55
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载