我从没想过这种事会发生在我身上,但我遇到了 Java 中的第一个错误:
https://bugs.java.com/bugdatabase/view_bug?bug_id=5003595 https://bugs.java.com/bugdatabase/view_bug?bug_id=5003595
我几乎处于与错误(Linux 上的 NFS)中描述的完全相同的情况,并且我看到File.exists()
没有返回正确的值(至少不是立即返回)。
所以我的问题是,除了这种检查文件是否存在的方法之外,还有其他选择吗?如果可能的话,我宁愿让它与操作系统无关。
编辑:我找到了解决方法。如果您致电ls $filedir
,NFS 刷新给 Java 带来麻烦的任何缓存/元数据,并且File.exists()
返回正确的值。诚然,这并不完全理想,因为它会损害可移植性,但有一些方法可以解决这个问题。
NFS 的基本问题是它缓存属性、文件和目录信息。这意味着该信息可能已过时。您也许可以关闭缓存,您会发现性能显着下降。
需要记住的重要一点是,NFS 不是消息传递服务,也不是为及时传送数据而设计的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)