网络上的Java文件锁定

里数D:

这可能与以前的帖子类似,但是我想具体说明在网络上而不是本地使用锁定。我想将文件写入共享位置,因此它很可能会在网络上运行(一定是Windows网络,也许是Mac)。我想防止其他人在写入文件时读取文件的任何部分。这不是一个高度并发的过程,文件通常小于10MB。

我已经阅读了FileLock文档和File文档,对于什么是安全的,什么不是安全的,我有些困惑。我想锁定整个文件,而不是部分文件。

我可以使用FileChannel.tryLock(),并且它在网络上是安全的,还是取决于网络的类型?它可以在标准Windows网络上运行吗(如果有)。

如果这不起作用,最好的方法是创建一个零字节的文件或目录作为锁定文件,然后写出主文件。为什么该File.createNewFile()文档说不要将其用于文件锁定?我明白这取决于比赛条件,并不理想。

德斯蒙德:

这不能在网络文件系统上可靠地完成。只要您的应用程序是唯一访问文件的应用程序,最好实现某种协作锁定过程(也许在打开文件时将锁定文件写入网络文件系统)。但是,不建议这样做的原因是,如果您的进程崩溃或网络崩溃或发生了其他任何数量的问题,则您的应用程序将进入令人讨厌的肮脏状态。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章