开发者社区> 问答> 正文

关于Java中使用BufferedReader读取文件的疑惑

BufferedReader in = new BufferedReader(new FileReader("foo.in"));

will buffer the input from the specified file. Without buffering, each
invocation of read() or readLine() could cause bytes to be read from

the file, converted into characters, and then returned, which can be
very inefficient.

这段话怎么理解,如果使用了缓冲区就不会涉及到byte转character?

展开
收起
蛮大人123 2016-03-04 16:51:37 2159 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    没有缓冲区时,每次读取操作都会导致一次文件读取操作(就是告诉操作系统内核我要读这个文件的这个部分,麻烦你帮我把它取过来)。而有缓冲区时,会一次性读取很多数据,然后按要求分次交给上层调用者。读取块大小通常是按最适合硬件的大小来读的,因为对于硬件来说,一次读取一块连续数据(比如 1K)和一次读取一个字节需要的时间几乎是一样的(都是一次读操作,只是最终提交的数据量有差异)。带缓冲的 I/O 和不带缓冲的相比效率差异是非常显著的,你可以自行写程序测试。

    2019-07-17 18:52:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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