fsync(2)manpage告诉同步目录是显式需要的,如果要同步文件。
io包中Java的sync方法怎么样?是否有照顾到这个问题?它是否取决于操作系统或文件系统?
我在 http:/docs.oracle.comjavase7docsapijavaioFileDescriptor.html#sync。...
该 fsync
手册页面上写着,调用 fsync
并不意味着相关目录也会被同步。如果需要: fsync
必须为该目录调用。
我可以看到几个很好的理由来解释这个定义行为。
说完了这些,我们再来看看Java的定义行为。
JavaDoc并没有提到任何关于目录等相关文件系统对象的内容。此外,我没有看到有什么方法可以获得一个 FileDescriptor
实例为一个目录。
根据OpenJDK的源代码来看OpenJDK实现的行为。java.io.FileDescriptor.sync()
只需触发一个 fsync
在UNIX和 FlushFileBuffers
在Windows上。
所以,没有。java.io.FileDescriptor.sync()
不会以任何方式影响相关目录。