【发布时间】:2013-04-15 08:17:04
【问题描述】:
我尝试了很多示例,但没有一个有效。 我试试这个,但不工作。
我也尝试使用tryLock()。它总是返回假。为什么?
private boolean checkCompleteFile(File f)
{
RandomAccessFile file = null;
FileLock fileLock = null;
try
{
file = new RandomAccessFile(f, "rw");
FileChannel fileChannel = file.getChannel();
fileLock = fileChannel.lock();
if (fileLock != null)
{
fileLock.release();
file.close();
return false;
}
}
catch(Exception e)
{
return false;
}
return true;
}
【问题讨论】:
-
什么不起作用?您从此处提供的代码中得到什么结果?你期待什么结果?
-
我总是可以锁定文件,即使文件正在被写入!!!
-
您的代码没有意义。您返回 true 的唯一时间是
FileChannel.lock()返回null,,这是它永远无法做到的。在这种情况下,您也会泄漏通道,但它永远不会真正发生。如果您设法获得了锁,则意味着没有其他人锁定它:在这种情况下您确定要返回true?