9

ディレクトリの変更とそのサブディレクトリを監視したい。これを実行しようとしましWatchServiceたが、ファイルがどのディレクトリから変更されたのかわかりません。から完全なパスを取得するにはどうすればよいWatchEventですか?

4

2 に答える 2

2

通常、ウォッチサービスを開始するときにファイルのディレクトリ名を指定します。これがどのように機能するかを示すチュートリアルです:

http://blogs.oracle.com/thejavatutorials/entry/watching_a_directory_for_changes

チュートリアルから:

   Path dir = ...;
   try {
       WatchKey key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
   }[.....]

通知を受け取ったとき:

   //The filename is the context of the event.
   WatchEvent<Path> ev = (WatchEvent<Path>)event;
   Path filename = ev.context();

   Path child = dir.resolve(filename);
于 2011-04-09T22:43:33.623 に答える
1

Spring を使用するユーザーの場合:

Spring 4.2では、 WatchServiceDirectoryScannerが導入されました。サブディレクトリの変更もキャッチできるようになりました。

詳細については、WatchServiceDirectoryScanner の Javadocs

于 2015-09-15T18:28:37.870 に答える