我发现 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;
}
我从不堵在锁上。它总是抛出