【问题标题】:Are FileChannel.force and FileDescriptor.sync both needed?FileChannel.force 和 FileDescriptor.sync 都需要吗?
【发布时间】:2011-04-13 13:45:44
【问题描述】:

在 https://stackoverflow.com/questions/730521/really-force-file-sync-flush-in-java,作者在答案摘要中写道:

对 Java NIO 使用 c.force(true) 后跟 s.getFD().sync()

我的问题是:你真的需要两者吗?力量不够吗?强制和同步不只是做同一件事的不同接口吗?我找不到任何可以证实这一点的地方。

【问题讨论】:

    标签: java io storage nio


    【解决方案1】:

    我的理解是正确的答案是否定的。

    FileChannel.force 调用fdatasync 或fsync。这可以在 OpenJDK 源代码的 jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c 中看到。 FileDescriptor 调用 fsync (发现这个比较复杂。我最后追踪到了 jvm.cpp)。

    我是链接问题的“作者”。所以我错了。 FileOutputStream.flush. 还不够,因为它是无操作的。因此,您需要强制或同步。

    【讨论】:

      猜你喜欢
      • 2014-10-07
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      • 2011-07-10
      • 2017-07-13
      • 2012-11-13
      • 2013-12-23
      • 2021-02-24
      相关资源
      最近更新 更多