为什么在写作时最好将文件分成小块?

  • 本文关键字:文件 java io
  • 更新时间 :
  • 英文 :


我正在阅读"O'Reilly Java IO"一书,有一个建议:

文件 аrе 通常最好以块大小的小倍数编写 磁盘,通常为 512、1024 或 2048 字节。

我试图找到任何解释,但我做不到。我只是有一些想法。但是,如果有人解释或分享链接,为什么这是一种很好的做法,那就太好了。谢谢。

防止硬盘上的读-写-修改循环。

理想情况下,您"输出数据"尽可能接近实际扇区大小。

每次写入数据时,都会读取整个扇区,然后使用您的数据进行修改,然后写回磁盘。

如果一次刷新 5 个字节,则必须执行大量 IO 操作。假设您有一个扇区大小为 4096 的硬盘驱动器,大约需要 120 次读取 - 修改 - 写入操作才能完成。

而如果将其缓冲到最大,则只需完成一个读写修改操作,这将减少等待硬盘驱动器完成此任务的时间。

许多操作系统进程和可能的硬盘驱动器固件存在等待一段时间,以查看是否会将更多数据添加到扇区,但最好帮助确保硬盘驱动器写入缓存可以更快地刷新到磁盘。

有趣的阅读:

在磁盘 I/O 期间幕后发生了什么?
http://www.seagate.com/tech-insights/advanced-format-4k-sector-hard-drives-master-ti/

最新更新