fsync(2) 手册页告诉如果文件被同步,则显式需要同步目录。
io包中Java的sync方法怎么样?有没有在意?它是否取决于操作系统和/或文件系统?
我在 http://docs.oracle.com/javase/7/docs/api/java/io/FileDescriptor.html#sync 中没有发现任何有用的信息...
最佳答案
fsync
手册页指出调用 fsync
在文件上并不意味着关联的目录也将被 fsync。如果需要,fsync
必须为目录调用。
我可以看到该定义/行为的几个充分理由:
顺便说一句,让我们看看 Java 的定义/行为。
JavaDoc 没有提及与目录等相关文件系统对象有关的任何内容。此外,我看不到获得
FileDescriptor
的方法。目录的实例。根据其源代码查看 OpenJDK 实现的行为,
java.io.FileDescriptor.sync()
只需触发 fsync
在 UNIX 和 FlushFileBuffers
上在 Windows 上。所以,不,
java.io.FileDescriptor.sync()
不会以任何方式影响关联的目录。
关于java - java.io.FileDescriptor.sync() 在 Linux 上 fsync 目录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20547437/