Java 为什么在编写时将文件分割成小块更好?

Java 为什么在编写时将文件分割成小块更好?,java,io,Java,Io,我正在读《O'Reilly Java IO》一书,有一个建议: 文件通常最好以块大小的小倍数编写 磁盘,通常为512、1024或2048字节 我试图找到任何解释,但我找不到。我有一些想法。但是,如果有人解释或分享这个链接,为什么这是一个好的做法,那就太好了。谢谢。为了防止硬盘上的读写修改周期不成功 理想情况下,您可以“输出数据”,尽可能接近实际扇区大小 每次写入数据时,整个扇区都会被读取,然后用数据修改,然后写回磁盘 如果一次刷新5个字节,那么就必须执行很多IO操作。假设您有一个扇区大小为409

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

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


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

为了防止硬盘上的读写修改周期不成功

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

每次写入数据时,整个扇区都会被读取,然后用数据修改,然后写回磁盘

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

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

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

有趣的阅读:



一般注意事项:如果您正在考虑实施一些认可此声明的东西:除非您正在做一些非常高性能的IO(每秒写入100 MB),否则不值得担心(即使这样也可能没有意义)。但是如果你想知道原因,那就太好了。以下问题的公认答案应该会给你一些提示,即使这个问题是关于阅读部分的:欢迎使用堆栈溢出!请带上,四处看看,并通读,尤其是和。