Java 7 WatchService API に基づいて、ディレクトリ内のファイルの内容を追跡するアプリケーションで、繰り返し発生する問題に遭遇しています。基盤となるファイル システムがファイルに対して変更イベントを発生させた場合、すぐにその SHA-256 を計算したいと考えています。
しかし、別のプロセスがファイル (Word など) を開いていることがよくあります。そのため、排他ロックが保持され、アプリで読み取り/書き込み操作ができなくなります。開いたファイルに対してストリーム/チャネルが作成された場合、nio API の FileNotFoundException または FileSystemException が次のようなメッセージとともにスローされます。
ファイルが別のプロセスによって使用されているため、プロセスはファイルにアクセスできません
ファイルが実際にfsに存在しない場合、「実際の」FileNotFoundExceptionをマスクせずにそのようなケースを検出するソリューションを見つけることができませんでした。
File.exists を介して存在を確認し、ストリームを開いたときに FileNotFoundException がスローされた場合、ファイルがロックされていると推測できるというアイデアを思いつきました。私はこれに関するあらゆる意見を受け入れます!
ありがとう!