基本的に、新しいJavaの7 WatchServiceを使用してディレクトリを監視しています。Java 7 WatchService:ハンドラのイベントソースを変更するときに無限ループのイベントを回避する
私は、ディレクトリによって発行されたすべてのIOイベントをリスンするハンドラのチェーンを持っています。
ハンドラが何らかの形でIOイベント(==ファイル)の理由を変更する必要があるという問題があります。たとえば、誰かが監視対象のフォルダにファイルを置くと、ハンドラの1つがファイルの拡張子を変更したり、ファイル名に何かを追加したりすることがあります。
これらのアクションはもちろん、新しいIOイベントをトリガーし、前述のハンドラーがそれらを取得します。そして、彼らはもう一度彼らの変更を行います。これは明らかに無限ループにつながります...
Javaはこのような状況を処理する方法を提供していますか?そうでない場合は、どうすればこの問題に対処しますか?
基本的には、イベントハンドラがそのハンドラのアクションによって引き起こされなかった場合にのみイベントハンドラを実行したいと思います。
UPDATE:解決策は、私が書いたすべてのハンドラでこれを心配するのではなく、メインイベントルータのコードだけを変更することです(「ハンドラはそれをしないと変更します前")。
以前の操作に基づいて、ハンドラで無視するイベントを追跡する必要があると思われます。 Mark Elliotの答えが可能な場合は、最も簡単な方法です。 – jontro