是否都需要FileChannel.force和FileDescriptor.sync?

| 在https://stackoverflow.com/questions/730521/really-force-file-sync-flush-in-java中,作者在答案摘要中写道:   对Java NIO使用c.force(true)和s.getFD()。sync() 我的问题是:您真的需要两者吗?武力还不够吗?是否不强制并同步仅不同的接口来执行同一操作?我找不到任何可以证实这一点的地方。     
已邀请:
我的理解是正确的答案是“否”。 FileChannel.force调用fdatasync或fsync。这可以在OpenJDK源代码的jdk / src / solaris / native / sun / nio / ch / FileChannelImpl.c中看到。 FileDescriptor调用fsync(要发现这一点更复杂。我最终将其追溯到jvm.cpp)。 我是链接问题的“作者”。所以我错了。仅仅FileOutputStream.flush是不够的。因为它是无人操作。因此,您需要强制或同步。     

要回复问题请先登录注册