У меня есть программа, которая следит за каталогом обновления файла, используя WatchService
. Я получаю события, когда изменяю файл. Однако я замечаю, что даже если я открою файл в vi и не изменю его содержимое, вызывается метод службы часов poll
. Мой код выглядит следующим образом:Java 7 WatchService - ENTRY_MODIFY запущен в открытом файле
watcher = FileSystems.getDefault().newWatchService();
Path path = Paths.get("conf");
path.register(watcher, ENTRY_MODIFY);
WatchKey key = null;
key = watcher.poll(MAX_WAIT_TIME, TimeUnit.SECONDS);
if (key != null) {
for (WatchEvent<?> events : key.pollEvents()) {
WatchEvent<Path> ev = cast(events);
Path fileName = ev.context();
}
В приведенном выше коде, watcher.poll ждет MAX_WAIT_TIME
для ENTRY_MODIFY
события. Однако, когда я открываю файл в просматриваемом каталоге и закрываю его без изменения его содержимого ... watcher.poll
получает событие и останавливается. Есть ли какой-то параметр, который необходимо установить, и мне не хватает?
Я бегу свою программу на UNIX. Я открываю файл в vi и закрываю его без сохранения. Как только я выхожу из файла, я вижу выход watcher.poll из режима ожидания. То, что я опубликовал выше, является фрагментом фактического кода, инструкция watcher.poll работает в цикле и корректно обрабатывает все реальные изменения. Только проблема заключается в том, что он получает событие, даже если файл открыто открыт в vi и закрыт без изменений. – user2881767