Как я могу посмотреть подкаталог на изменения с помощью WatchService?(Джава) - PullRequest
9 голосов
/ 10 апреля 2011

Я хочу посмотреть каталог на предмет изменений и его подкаталогов. Я пытался сделать это с WatchService, но я не могу знать, из какого каталога был изменен файл. Как я могу получить полный путь от WatchEvent?

Ответы [ 2 ]

2 голосов
/ 10 апреля 2011

Как правило, вы указываете имя каталога файла при запуске службы наблюдения. Вот учебник, демонстрирующий, как это работает:

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);
1 голос
/ 15 сентября 2015

Для пользователей, которые используют Spring :

С Spring 4.2 Представлен WatchServiceDirectoryScanner .Теперь он также может отслеживать изменения подкаталогов.

Для получения дополнительной информации Javadocs на WatchServiceDirectoryScanner

...