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

我的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来通知此类更改。

以上是 检查文件是否在Java中被锁定 的全部内容, 来源链接: utcz.com/qa/419027.html

回到顶部