当前位置: 首页 > 面试题库 >

网络上的Java文件锁定

公沈义
2023-03-14
问题内容

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

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

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

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


问题答案:

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



 类似资料:
  • 本文向大家介绍Android 打开网络上pdf文件,包括了Android 打开网络上pdf文件的使用技巧和注意事项,需要的朋友参考一下 之前写过一篇Android打开本地pdf文件的文章,最后总结的时候说,后面一定要拓展库,让其也能打开网络的的pdf文件。今天终于可以兑现承诺了。frok一份代码https://github.com/JoanZapata/android-pdfview,源码地址:h

  • 问题内容: 我有几个线程(其中一些由进程X产生,其他由进程Y 等产生 ),并且每个线程都需要写入文件。但是,如果开始写第一,那么,当开始写作,它需要等待到 释放文件 ,以便它可以读取写在该内容。换句话说,每个线程都会有一个方法,如下所示: 我的问题是:如何完成以上代码?我正在研究该类,但是它在Javadoc中说: “文件锁代表整个Java虚拟机持有。它们不适合控制同一虚拟机中多个线程对文件的访问。

  • 问题内容: 我有一个位于共享网络位置的文件: (有意留有空格) 如下代码: 打印到该文件存在的控制台( System.out.println(f.exists()); ),但抛出此异常!: 有谁知道为什么会发生这种情况?我已经尝试了从创建URI到随后对其进行解码的所有操作……没有任何效果。 问题答案: 当您尝试访问路径中带有空格的网络驱动器上的资源时,似乎存在一个错误。请参阅Sun的错误数据库中的

  • 我有这段代码: 问题1: 奇怪的是,只要我在上使用,它就可以工作。 当我切换到而不是时,它就不起作用(该文件不会写入数据库(通过spring-data-r2dbc))。 为什么会这样? 问题2: 当我想在保存到数据库后执行另一个操作(将文件保存到minio容器)时,如何将其链接到给定的代码中?另一个?

  • 问题内容: 我们的一位客户正在使用某些Novell安全软件,有时会锁定我们的软件创建的某些.class文件。发生这种情况时,这会给他们带来一些麻烦的问题,我正在尝试研究一种变通办法,我们可以将其添加到错误处理中以解决此问题。我想知道java api中是否有任何调用可用于检测文件是否已锁定,如果已锁定,则将其解锁。 问题答案: 在尝试写入文件之前,您可以使用File.canWrite()检查Java

  • 本文向大家介绍Java读取并下载网络文件的方法,包括了Java读取并下载网络文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Java读取并下载网络文件的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。