在 https://stackoverflow.com/questions/730521/really-force-file-sync-flush-in-java中,作者在答案摘要中写道:
使用c.force(true),然后使用s.getFD()。sync()for Java NIO
我的问题是:你真的需要两者吗?力不够吗?是不是强制和同步只是不同的接口做同样的事情?我无法找到确认的地方。
答案 0 :(得分:11)
我的理解是,正确的答案是否。
FileChannel。强制拨打fdatasync或fsync。这可以在OpenJDK源代码的jdk / src / solaris / native / sun / nio / ch / FileChannelImpl.c中看到。 FileDescriptor调用fsync(要发现它更复杂。我最终将其追溯到jvm.cpp)。
我是相关问题的“作者”。所以我错了。什么是不够的FileOutputStream.flush.,因为它是一个无操作。因此,您需要强制或同步。