Java FileLock阻塞没有异常; 在等待锁

jiv*_*key 9 java

我发现Java文件锁定机制是一个真正的错误,因为它无法执行第一个锁定规则 - 阻止锁定调用!除非我错了 - 如果应用程序已经对文件保持锁定,则对lock()的调用将抛出异常,我知道在我的应用程序中就是这种情况.我在这里看了一些答案,不幸的是我没有使用Java 7.

有没有人有关于我如何处理等待独占文件锁而不将自己置于while(true)循环中的建议:)

在Aubin的回答后编辑(复制评论):

我想要做的是在将大文件复制到目录后再访问它,然后对其进行处理.我的代码很简单......

public boolean ifFileReady(File file) {
   boolean ready = false;
   FileLock lock = null;
   FileChannel channel = null;
   try {

      channel = new RandomAccessFile(file, "rw").getChannel();
      lock = channel.lock();
      lock.release();
      ready = true;
   }
   catch( IOException e ) {
      // Always Here
   }
   finally
   {
      if (channel != null)
         channel.close();
   }
   return ready;
}
Run Code Online (Sandbox Code Playgroud)

我从不阻挡锁.它总是抛出

Aub*_*bin 2

文件副本java.nio.channels.FileChannel:​

公共抽象 FileLock 锁(长位置,长尺寸,布尔共享)抛出 IOException

获取此通道文件的给定区域的锁定。

对此方法的调用将阻塞,直到可以锁定该区域、关闭该通道或中断调用线程(以先发生者为准)。

自:1.4