我有一组文件。该文件集在 NTFS 共享上是只读的,因此可以有许多阅读器。每个文件由一个具有写访问权限的写入者偶尔更新。
我如何确保:
- 如果写入失败,则表示之前的文件仍然可读
- 读者无法支撑单个作者
我正在使用 Java,我目前的解决方案是让作者写入一个临时文件,然后使用File.renameTo()
. 问题出在 NTFS 上,renameTo
如果目标文件已经存在则失败,因此您必须自己删除它。但是如果作者删除目标文件然后失败(计算机崩溃),我没有可读的文件。
nio 的 FileLock 只适用于同一个 JVM,所以对我来说没用。
如何使用 Java 安全地更新具有多个阅读器的文件?