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

检查文件是否在Java中被锁定

祁嘉木
2023-03-14
问题内容

我的Java程序想要读取一个文件,该文件可以被另一个写入该文件的程序锁定。我需要检查文件是否已锁定,如果已锁定,请等待它释放。我该如何实现?

Java程序在Windows 2000服务器上运行。


问题答案:

在带有Sun JVM的Windows下,尽管JavaDoc保留了相当模糊的可靠性(取决于系统),但FileLocks应该可以正常工作。

但是,如果您只需要在Java程序中识别出 其他
某个程序正在锁定文件,则不必为FileLocks苦恼,而是可以简单地尝试写入文件,如果文件被锁定,它将失败。您最好在您的实际系统上尝试此操作,但是我看到以下行为:

File f = new File("some-locked-file.txt");
System.out.println(f.canWrite()); // -> true
new FileOutputStream(f); // -> throws a FileNotFoundException

这很奇怪,但是如果您不认为平台独立性过高,并且系统显示出相同的行为,则可以将其组合到实用程序函数中。

不幸的是,在当前的Java版本中,没有任何方法可以通知文件状态更改,因此,如果您需要等到可以写入文件后,就必须立即尝试一下,然后检查另一个进程是否已释放其锁。我不确定,但是对于Java
7,可能可以使用新的WatchService来通知此类更改。



 类似资料:
  • 本文向大家介绍Git 检查文件是否被忽略,包括了Git 检查文件是否被忽略的使用技巧和注意事项,需要的朋友参考一下 示例 该git check-ignore命令报告Git忽略的文件。 您可以在命令行上传递文件名,git check-ignore并将列出被忽略的文件名。例如: 在此,.gitignore中仅定义了* .o文件,因此Readme.md未在.git的输出中列出git check-igno

  • 问题内容: 在打开文件以Java读取之前,如何检查文件是否存在?(相当于Perl的)。 关于SO的唯一类似问题涉及写入文件,因此使用回答了该问题,这显然不适用于此处。 如果可能的话,我宁愿使用真正的API调用返回,而不是使用“调用API来打开文件并在引发异常时捕获并在文本中检查’无文件’的情况下捕获”,但是我可以接受后者。 问题答案: 使用:

  • 我用discordjavaapi(JDA)编写了一个purge(clear)命令。 在斜杠命令的帮助下,我想检查消息是否被固定,以及当消息被固定时,应该跳过消息。我不熟悉用Java写东西,所以我什么都不懂

  • 问题内容: 尝试检查我要读取的文件是否存在。 问题答案: 这是另一种方法: 包装的用途和功能: p_DirName in varchar2, – schema object name p_FileName in varchar2 ) return number is l_file_loc bfile; begin l_file_loc := bfilename(upper(p_DirName),

  • 问题内容: 如何检查 文件 的存在? 在模块的文档中,有方法的说明。但是,据我了解,它只检查目录的存在。而且我需要检查 文件 ! 如何才能做到这一点? 问题答案: 为什么不尝试打开文件? 无论如何,经过一分钟的搜索,请尝试以下操作: 对于Node.js v0.12.x及更高版本 双方并已弃用 *编辑: 已更改: 至: 林特抱怨双重等于不是三次等于。 使用fs.stat:

  • 问题内容: 我正在尝试检查给定目录中的特定文件。我不需要代码,但我想修复已有的代码。这个问题的唯一区别是,我正在寻找带有扩展名的文件。 我已经准备好代码:- 但是由于某些原因,它不起作用。我不明白为什么,有人可以在这里找到任何错误吗? 问题答案: 您希望temp.MOD文件位于当前目录(运行应用程序的目录)中,还是希望它位于“目录”文件夹中?在后一种情况下,尝试以这种方式创建文件: 还要检查文件权