FileDescriptor.sync() 是否适用于所有文件数据或仅适用于调用方 JVM 中的文件数据

Does FileDescriptor.sync() work for all file data or just file data originating within the callers JVM

这会确保所有数据都在本地计算机上同步,还是仅同步来自当前运行的 JVM 中的数据?

FileOutputStream s = new FileOutputStream(filename)
s.getFD().sync()

FileInputStream fis = new FileInputStream(null);
fis.getFD().sync();

上下文:我们有许多程序(其他软件)写入我们共享的文件。我们都在使用它时锁定它,然后解锁它,...但是我们发现 OS 没有完全同步到文件存储(网络驱动器),即使每个人都完成了他们的文件。

即使在获得锁之后,OS 似乎也没有与文件同步,并且最后的一些数据还没有写入。

Does FileDescriptor.sync() work for all file data

没有

or just file data originating within the callers JVM

它仅适用于当前文件描述符,它必须在调用者的 JVM 中,连同他正在写入的数据。