这与以前的帖子可能类似,但我想具体说明在网络上锁定的用法,而不是本地锁定。我想要将文件写入共享位置,因此它很可能会在网络上传输(肯定是Windows网络,也许是Mac网络)。我想要防止其他人在文件正在被写入时读取文件的任何部分。这不会是高并发过程,文件通常不超过10MB。
我已经阅读了FileLock
文档和File
文档,并感到有些困惑,不知什么是安全的,什么不是安全的。 我想锁定整个文件,而不是其中的一部分。
我能否使用FileChannel.tryLock()
,并且在网络上安全,还是取决于网络类型?它在标准的Windows网络中有效吗(如果有这样的东西)。
如果这样不行,是否最好创建一个零字节的文件或目录作为锁文件,然后再编写主文件。为什么File.createNewFile()
文档说不要用它来进行文件锁定?我知道这存在竞态条件,也不是理想的。