java - Java中的缓冲区和文件
问题描述
我是java新手,我想问一下使用FileReader-FileWriter和使用BufferedReader-BufferedWriter有什么区别。除了速度之外,还有其他使用缓冲的理由吗?在复制文件并将其内容粘贴到另一个文件的代码中,使用 BufferedReader 和 BufferedWriter 更好吗?
解决方案
简短的版本是:文件写入器/读取器速度快但效率低,但是缓冲写入器/读取器保存写入/读取并以块的形式执行它们(基于缓冲区大小),效率更高但速度可能更慢(等待缓冲区填满)。
因此,要回答您的问题,缓冲的写入器/读取器通常是最好的,特别是如果您不确定使用哪一个。
查看 BufferedWriter 的JavaDoc,它很好地解释了它的工作原理:
通常,Writer 将其输出立即发送到底层字符或字节流。除非需要快速输出,否则 建议将 BufferedWriter 包装在任何 write() 操作可能代价高昂的 Writer 周围,例如 FileWriters和 OutputStreamWriters。例如,
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
将 PrintWriter 的输出缓冲到文件中。如果没有缓冲,每次调用 print() 方法都会导致字符转换为字节,然后立即写入文件,这可能非常低效。
推荐阅读
- python - 如何使用 ReportLab 在 PDF 中绘制电子签名
- openwhisk - OpenWhisk 是否支持 OpenAPI 3.x 规范?
- css - 使用 Jekyll / Hugo 站点的自托管 Nginx 未加载 CSS
- google-apps-script - 添加 OAUTH 范围时如何不执行“onAddToSpace”
- swift - 为什么具有 autosaveExpandedItems true 的基于视图的 NSOutlineView 在 reloadData 时忽略扩展?
- c - 我想在 MBED 中使用 RX_interrupt 获取字符串
- mongodb - 如何在更新时间 MongoDb 中将字段的总值添加为预聚合字段?
- angular - 面临角度站点路线导航的问题
- c# - 未在 Azure Blob 存储 v12 中计算 ContentHash
- javascript - 使用本机反应创建页面构建器