这可能类似于以前的帖子,但我想具体说明在网络上使用锁定而不是本地锁定。我想写一个文件到共享的位置,所以它可能会在网络上(当然是Windows网络,也许是Mac)。我想阻止其他人在写它的同时阅读这个文件的任何部分。这不会是一个高度并发的进程,文件通常不会超过10MB。网络上的Java文件锁定
我已阅读FileLock
文档和File
文档,并且对于什么是安全的和什么是不安全的有些困惑。我想锁定整个文件,而不是部分文件。
我可以使用FileChannel.tryLock()
,它在网络上是否安全,还是取决于网络类型?它是否可以在标准的Windows网络上运行(如果有这样的事情)。
如果这不起作用,创建零字节文件或目录作为锁定文件,然后写出主文件是最好的。为什么File.createNewFile()
文档说不要使用这个文件锁定?我很欣赏这受到比赛条件的限制,并不理想。