4

フォルダーを監視するために、Java 7 で WatchService を試しています。WatchService に登録されているパスに追加されているファイルまたはフォルダーを監視したい。

登録されたパスにフォルダーを追加すると、ENTRY_CREATE として正しく検出され、watchEvent.context() でフォルダーの名前が返されます。しかし、そのフォルダーにフォルダーを再度追加すると、それは検出されますが、watchEvent.context() は同じフォルダーと ENTRY_MODIFY を返します。これは、そのフォルダーが別のフォルダーを追加することによって変更されているためです。

だから私はこれを理解していますが、構造内のすべてのフォルダーを登録する必要があるのか​​ 、それとも最上位のフォルダーを登録してリッスンするのか、作成して変更するのかわかりません

4

1 に答える 1

4

プラットフォーム間での直接的なサポートはありません。Windows にはExtendedWatchEventModifier.FILE_TREE、ディレクトリを再帰的に監視する があります。ただし、Mac または Linux には同等の機能はありません。ExtendedWatchEventModifierまた、は拡張機能であり、標準定義の一部ではないことに注意してください。

CREATE と DELETE をリッスンする必要があります。作成 (削除) されたオブジェクトがディレクトリの場合、サブディレクトリに新しいウォッチを追加 (削除) する必要があります。

于 2012-10-15T11:58:40.503 に答える