Java: просмотр каталога изменений - PullRequest
2 голосов
/ 23 сентября 2011

Я хочу создать прослушиватель для рекурсивного обнаружения изменения каталога (основной каталог и его подкаталоги).После веб-поиска я нашел эту ссылку , которая объясняет использование класса WatchService из пакета java.nio.file, который точно соответствует моим потребностям, но, к сожалению, он доступен только в Java 7!Затем я снова возвращаюсь к поиску, чтобы найти framework , который допускает то же самое и совместим с java 5 и java 6, но снова возникла проблема, потому что рекурсия доступна для Windows, и мое приложение должно использовать Linux!!Можете ли вы предложить мне решение: другой каркас, способ сделать ..

Ответы [ 4 ]

2 голосов
/ 23 сентября 2011

Я думаю, что вы хорошо поработали и обнаружили замечательную библиотеку jpathwatch.Я не понимаю, в чем заключалась ваша проблема с рекурсией: я не видел никаких ограничений для linux в этой документации библиотеки.

Но если по какой-то причине jpathwatch не может помочь вам в Linux, это не проблема: вы можете запустить команду du command самостоятельно.См. Эту ссылку: http://linux.about.com/library/cmd/blcmdl1_du.htm

Если бы я был вами, я, вероятно, сделал бы следующее: напишите простой скрипт, который запускает du in loop.Затем запустите этот скрипт из Java из отдельного потока, который непрерывно читает вывод скрипта и анализирует его.

1 голос
/ 23 сентября 2011

Для этого в Linux вам нужно использовать Java 7 или нативную библиотеку, которая использует inotify.Вы рассматривали библиотеку JNotify ?Похоже, что он обрабатывает рекурсию в подкаталоги, включая только что созданные.

1 голос
/ 23 сентября 2011

Это функциональность, для которой требуется поддержка JVM или встроенной библиотеки, например, той, что вы нашли для Windows. Если вы не можете найти в Java для Linux, я предлагаю запросить бинарную библиотеку Linux (в другом вопросе), а затем создать собственный Java-класс поверх этого.

Я надеюсь, что другие люди помогут вам лучше.

0 голосов
/ 27 сентября 2011

Посмотрите на http://download.oracle.com/javase/tutorial/essential/io/notification.html

"Пакет java.nio.file предоставляет API уведомления об изменении файла, называемый API службы наблюдения. Этот API позволяет регистрировать каталог (или каталоги) с помощьюслужба наблюдения. При регистрации вы сообщаете службе, какие типы событий вас интересуют: создание файла, удаление файла или изменение файла. Когда служба обнаруживает интересующее событие, она направляется зарегистрированному процессу. Зарегистрированный процессимеет поток (или пул потоков), предназначенный для наблюдения за любыми событиями, для которых он зарегистрирован. Когда событие приходит, оно обрабатывается по мере необходимости. "

Обновление: Упс, только что понял, что вы уже видели,Я не знал, что это было только в Java 7: - (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...