Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / WatchService не видит изменений / 8 сообщений из 8, страница 1 из 1
04.09.2016, 18:20
    #39303403
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WatchService не видит изменений
NTFS диск, если редактирую файл блокнотом, то pollEvents срабатывает, всё ок.
Есть софт, который пишет данные в лог файл, WatchService не видит этих изменений до ротации. Т.е. когда сторонний софт ротирует лог файлы (начинает писать в новый файл в том же каталоге), то pollEvents срабатывает.

Еще заметил, что pollEvents срабатывает до ротирования, только если открыть в Explorer`e директорию, срабатывает как раз в момент открытия. При этом как бы last modify у файла свежий. Как его заставить видеть изменения?
...
Рейтинг: 0 / 0
04.09.2016, 18:35
    #39303405
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WatchService не видит изменений
Пробовал так, не помогло:

Код: java
1.
2.
3.
4.
5.
            dir.register(watcher, new WatchEvent.Kind[]{
                StandardWatchEventKinds.ENTRY_CREATE,
                StandardWatchEventKinds.ENTRY_MODIFY,
                StandardWatchEventKinds.ENTRY_DELETE
            }, SensitivityWatchEventModifier.HIGH);
...
Рейтинг: 0 / 0
05.09.2016, 10:23
    #39303636
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WatchService не видит изменений
Терзают смутные сомнения что логирование и не закрывает файл поэтому и нет никаких event до момента ротирования
...
Рейтинг: 0 / 0
05.09.2016, 10:49
    #39303656
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WatchService не видит изменений
Не закрывает.
Но почему когда открываешь в эксплорере каталог этот, то нотификация срабатывает? (если конечно файл был изменен с момента последнего открытия эксплорера)
...
Рейтинг: 0 / 0
05.09.2016, 10:53
    #39303661
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WatchService не видит изменений
HettНе закрывает.
Но почему когда открываешь в эксплорере каталог этот, то нотификация срабатывает? (если конечно файл был изменен с момента последнего открытия эксплорера)

вот тут непонятно конешно.
но скорее всего ОС кэшит на всякий все подряд к чем в последнее время был доступ и поэтому каталог действительно открывается системным вызовом только если изменилось время у файлового дескриптора иначе тупо ренедерит последнее что было.

по крайней мере на win10 чуство что кэшируется все подряд ибо первое открытие тормозит а потом все шустро работает.
...
Рейтинг: 0 / 0
05.09.2016, 10:58
    #39303662
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WatchService не видит изменений
но это мои предположения
более точно наверное нужно разбираться на какие именно системные вызовы реагирует этот WatchService и при каких условия эти вызовы происходят
...
Рейтинг: 0 / 0
05.09.2016, 12:48
    #39303769
scf
scf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WatchService не видит изменений
Правильно использовать WatchService не так-то просто. Я свою реализацию содрал с исходников gradle - и рекомендую сделать так же. Реализацию найти несложно - качаешь исходники, ищешь по тексту WatchService. У них там всё инкапсулировано и лежит в отдельном пакете.
...
Рейтинг: 0 / 0
17.09.2016, 12:55
    #39310787
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WatchService не видит изменений
scfПравильно использовать WatchService не так-то просто. Я свою реализацию содрал с исходников gradle - и рекомендую сделать так же. Реализацию найти несложно - качаешь исходники, ищешь по тексту WatchService. У них там всё инкапсулировано и лежит в отдельном пакете.

Как может быть не правильным то, что написано в документации?

Вот такой пример прекрасно воспросизводит то, что я описал.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
        try(PrintWriter pw = new PrintWriter("C:\\Temp\\log\\hwidlist\\2016-09-17-11.log")) {
            while (true) {
                pw.append("data\r\n");
                pw.flush();
                Thread.sleep(1000);
            }
        } catch (FileNotFoundException | InterruptedException e) {
            e.printStackTrace();
        }
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / WatchService не видит изменений / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]