这可能与之前的帖子类似,但我想具体说明在网络上而不是本地上使用锁定。我想将文件写入共享位置,因此它很可能位于网络上(当然是 Windows 网络,也可能是 Mac)。我想防止其他人在写入该文件时读取该文件的任何部分。这不会是一个高度并发的进程,并且文件通常小于 10MB。
我读过FileLock
文档和File
文档,我有些困惑,什么是安全的,什么是不安全的。我想锁定整个文件,而不是其中的一部分。
我可以用吗FileChannel.tryLock()
,并且在网络上是安全的,还是取决于网络类型?它能在标准 Windows 网络上工作吗(如果有的话)。
如果这不起作用,最好的办法是创建一个零字节文件或目录作为锁定文件,然后写出主文件。为什么会这样File.createNewFile()
文档说不要使用它来锁定文件?我明白这会受到竞争条件的影响,并且并不理想。
这无法在网络文件系统上可靠地完成。只要您的应用程序是访问该文件的唯一应用程序,最好实现某种协作锁定过程(也许在打开文件时将锁定文件写入网络文件系统)。但是,不建议这样做的原因是,如果您的进程崩溃或网络出现故障或发生任何其他问题,您的应用程序就会进入令人讨厌的肮脏状态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)