вопросы мониторинга каталогов Java 7 - PullRequest
7 голосов
/ 11 июня 2011

Я только что увидел потрясающую функцию с Java 7, наблюдатель каталога.Он сообщит вам, когда что-то изменилось в каталоге, не опрашивая каталог.

1.) Но он говорит, что возвращается к опросу, если файловая система не поддерживает регистрацию событий изменения.Все ли типичные файловые системы Linux и Windows (extX, ntfs, reiserXXX, jsf, zfs) поддерживают эту функцию?

2.) Переименование файла в каталоге - это событие создания или изменения?Или это один удалить и один создать?Я могу проверить его на одной системе, но будет ли он одинаковым для всех файловых систем?

Ответы [ 2 ]

2 голосов
/ 11 июня 2011

Похоже, вы говорите о WatchService .

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

Формулировка также гласит, что то, основана ли служба на операционной системе или опросе, зависит от реализации. Я подозреваю, что это реализация JRE, поэтому даже если вы знаете, что ее поддерживает определенная ОС, это не гарантирует, что служба будет использовать функциональность уровня ОС или прибегнет к опросу. На самом деле служба не предоставляет никакого способа определить, использует ли она опрос или функцию уровня ОС.

Операции, определяемые API, также не ведут себя как слушатель. WatchService выполняет автоматическое наблюдение, но для получения списка событий, которые происходят, вам все равно придется вручную запрашивать видимые события из сервиса. Похоже, он не предоставляет никаких хуков для автоматического вызова при появлении нового события.

1 голос
/ 11 июня 2011

Если вы играете с ним в Windows и в Linux, вы увидите много различий в поведении.Так что Java на самом деле не пытается обеспечить согласованную независимую от платформы абстракцию.Вы должны протестировать свое приложение на тех ОС, которые вам нужны (ну, их всего 2).

WatchService отстой больше, чем вы можете себе представить.Приготовьтесь к разочарованию, если вы действительно погрузитесь в это.

...