Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Java WatchService


Автор: Oligarh 25.5.2012, 12:20
Здравствуйте.
Подскажите, кто юзал в 7 Java WatchService.
Есть директория, в которой несколько поддиректорий и есть файлы, как в корне папки основной, так и в подпапках.
Использую WatchService для просмотра изменений в этих папочках.
Все прекрасно работет, когда мы добавляем, удаляем или переименовываем файлы, но если заменяем какой-то файл в поддиректории на другой с таким же именем, то WatchService не видит никаких изменений в каталоге. 
В чем может быть проблема и кто что думает по этому поводу?

Делаю вот так:
Код

File file = new File(dirResource);
WatchService watcher = null;
Path path = file.toPath();
WatchKey key = null;
try {
    watcher = FileSystems.getDefault().newWatchService();
    updateFileInList(listArray(dirResource), erasePath(dirResource + "/"));

    key = path.register(watcher,
        StandardWatchEventKinds.ENTRY_CREATE,
        StandardWatchEventKinds.ENTRY_DELETE,
        StandardWatchEventKinds.ENTRY_MODIFY);
    } catch (IOException e) {
            ...
    }

    try {
        while (true) {
            WatchKey watchKey = null;
            if (watcher != null) {
                watchKey = watcher.take();
            }
            if (watchKey != null) {
                for (WatchEvent<?> watchEvent : watchKey.pollEvents()) {
                    WatchEvent.Kind kind = watchEvent.kind();
                    if (kind == StandardWatchEventKinds.OVERFLOW) {
                        System.out.println("##### OVERFLOW IN WatcherService!!!");
                        continue;
                    }

                    ............


                    }
                    watchKey.reset();
                }
            }
        } catch (InterruptedException e) {
            .............
        }


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)