使用JavaAPI锁定和解锁文件

使用JavaAPI锁定和解锁文件,java,file,locking,Java,File,Locking,我们的一个客户正在使用一些新颖的安全软件,该软件有时会锁定我们的软件创建的一些.class文件。当这种情况发生时,这会给他们带来一些令人讨厌的问题,我正在尝试研究一种变通方法,我们可以将其添加到错误处理中,以在出现问题时解决这个问题。我想知道java api中是否有任何调用可用于检测文件是否被锁定,如果被锁定,则解除锁定 在尝试写入文件之前,可以使用检查java应用程序是否可以写入该文件。但是,如果第三方应用程序将文件锁定在file.canWrite()检查和应用程序实际尝试写入之间,您仍然可能

我们的一个客户正在使用一些新颖的安全软件,该软件有时会锁定我们的软件创建的一些.class文件。当这种情况发生时,这会给他们带来一些令人讨厌的问题,我正在尝试研究一种变通方法,我们可以将其添加到错误处理中,以在出现问题时解决这个问题。我想知道java api中是否有任何调用可用于检测文件是否被锁定,如果被锁定,则解除锁定

在尝试写入文件之前,可以使用检查java应用程序是否可以写入该文件。但是,如果第三方应用程序将文件锁定在file.canWrite()检查和应用程序实际尝试写入之间,您仍然可能会遇到问题。出于这个原因,我将对应用程序进行编码,使其简单地继续并尝试写入文件,并捕获文件锁定时引发的任何异常。我不相信有一种本地Java方法可以解锁被另一个应用程序锁定的文件。您可以以特权用户的身份执行shell命令来强制执行操作,但这似乎不雅观

File.canWrite()具有Asph提到的竞争条件。您可以尝试FileChannel.lock()并获得文件的独占锁。只要.class在本地磁盘上,就可以正常工作(网络磁盘上的文件锁定可能会有问题)

或者,根据.class名称的发现方式,您可以每次为.class创建一个新名称;然后,如果防病毒软件锁定了您的初始类,您仍然可以创建新类。

您所说的“锁定文件”是什么意思?您的意思是软件正在使用.class文件,因此无法更改它们吗?或者你指的是像flock(2)这样的东西?