ディレクトリを監視するプログラムを作成しており、その中にファイルが作成されると、名前が変更されて新しいディレクトリに移動されます。最初の実装では、1kb ファイルのテスト時に問題なく動作する Java の Watch Service API を使用しました。発生した問題は、実際には、作成されるファイルが 50 ~ 300 MB のどこかにあるということです。これが発生すると、ウォッチャー API はすぐにファイルを見つけますが、ファイルがまだ書き込まれているため移動できませんでした。ウォッチャーをループに入れてみましたが (ファイルが移動できるようになるまで例外が生成されました)、これはかなり非効率的でした。
それがうまくいかなかったので、10秒ごとにフォルダーをチェックし、可能であればファイルを移動するタイマーを使用してみました。これは私が行き着いた方法です。
質問: 例外チェックを実行したり、サイズを継続的に比較したりせずに、ファイルの書き込みが完了したことを通知する方法はありますか? タイマーで継続的にチェックする (そして例外が発生する) のではなく、ファイルごとに 1 回だけ Watcher API を使用するというアイデアが気に入っています。
すべての応答は大歓迎です!
nt