首页 > 解决方案 > Java中的缓冲区和文件

问题描述

我是java新手,我想问一下使用FileReader-FileWriter和使用BufferedReader-BufferedWriter有什么区别。除了速度之外,还有其他使用缓冲的理由吗?在复制文件并将其内容粘贴到另一个文件的代码中,使用 BufferedReader 和 BufferedWriter 更好吗?

标签: javabufferedreaderfilereaderfilewriterbufferedwriter

解决方案


简短的版本是:文件写入器/读取器速度快但效率低,但是缓冲写入器/读取器保存写入/读取并以块的形式执行它们(基于缓冲区大小),效率更高但速度可能更慢(等待缓冲区填满)。

因此,要回答您的问题,缓冲的写入器/读取器通常是最好的,特别是如果您不确定使用哪一个。

查看 BufferedWriter 的JavaDoc,它很好地解释了它的工作原理:

通常,Writer 将其输出立即发送到底层字符或字节流。除非需要快速输出,否则 建议将 BufferedWriter 包装在任何 write() 操作可能代价高昂的 Writer 周围,例如 FileWriters和 OutputStreamWriters。例如,

PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));

将 PrintWriter 的输出缓冲到文件中。如果没有缓冲,每次调用 print() 方法都会导致字符转换为字节,然后立即写入文件,这可能非常低效。


推荐阅读