Java ファイルのロック メカニズムは、ロックの最初のルールであるロックの呼び出しをブロックすることができないため、本当の間違いであることがわかりました。私が間違っていない限り、アプリケーションが既にファイルのロックを維持している場合、lock() を呼び出すと例外がスローされます。ここでいくつかの回答を見てきましたが、残念ながらJava 7を使用していません。
ループに陥ることなく、排他的なファイルロックを待機する方法について誰か提案がありますかwhile(true)
:)
オービンの答えの後に編集(コメントからコピー):
私がしたいのは、ディレクトリにコピーされた後に大きなファイルにアクセスしてから処理することです。私のコードは単純です...
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;
}
ロックでブロックすることはありません。いつも投げる