In https://stackoverflow.com/questions/730521/really-force-file-sync-flush-in-java, the author writes in the summary of the answers:
Use c.force(true) followed by s.getFD().sync() for Java NIO
My question is: do you really need both? Isn't force enough? Aren't force and sync just different interfaces for doing the same thing? I can't find anyplace where this is confirmed.
fsync()
(orfdatasync()
in case of FileChannel.force with false). I've found them in src/java.base/unix/native/libnio/ch/UnixFileDispatcherImpl.c (FileChannel native end call) and src/java.base/unix/native/libjava/FileDescriptor_md.c (FileDescriptor native implementation) - OpenJDK's commit id ee57e731d03