我已經嘗試了很多例子,但沒有人能夠正常工作。 我嘗試這個,但不工作。我試過也用tryLock()
。它總是返回false。爲什麼?如何確定文件是否正在被另一進程使用(Java)
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;
}
什麼不起作用?你從你提供的代碼中得到了什麼結果?你期望什麼結果? –
即使正在寫入文件,我也可以始終鎖定文件! –
你的代碼沒有意義。只有當FileChannel.lock()返回null時,才返回true,這是它永遠不會做到的。在這種情況下,你也在泄漏渠道,但它永遠不會發生。如果你設法取得鎖定,那就意味着沒有其他人鎖定它:當然你想在這種情況下返回'true'? – EJP