Подтвердить что ты не робот

Есть ли сложный файловый монитор для Java, который является бесплатным или открытым исходным кодом?

Я ищу библиотеку Java, которая может уведомить меня об изменениях в файловой системе.

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

Я ищу библиотеку, которая использует функции мониторинга файлов из ОС, т.е. FindFirstChangeNotification для Win32, FAM для Linux и что угодно доступный в других ОС. Я не возражаю, если грубая сила используется как резерв, но для Windows и Linux она должна использовать доступные функции ОС.

4b9b3361

Ответ 1

JNotify, похоже, делает то, что вам нужно.

Опрос файловой системы (скажем, каталога для изменения времени обновления) не будет налагать значительную нагрузку на вашу систему и не должен быть дисконтирован. Такие приложения, как Tomcat и т.д., Используют это для управления горячими развертываниями с небольшими проблемами.

Теперь это не очень помогает, но наступающий Java 7 имеет WatchService именно для этого.

Ответ 2

Если вам комфортно работать на краю ядра Java, посмотрите JSR 203: новые API-интерфейсы ввода-вывода, а также nio2, которые выдается в Java 7.

Новый интерфейс файловой системы, который поддерживает массовый доступ к файлу атрибуты, уведомление об изменении, переход к API-интерфейсам, специфичным для файловой системы, и интерфейс поставщика услуг для совместимые реализации файловой системы;

Ответ 3

jpathwatch - еще один вариант. Он реализует API Java 7 для мониторинга каталогов, поэтому при желании легко переносить на Java 7.

Ответ 4

Почему это должна быть Java?

Библиотека, которая собирается использовать API, специфичный для платформы, должна иметь собственный код, поэтому по существу библиотека будет обертки вокруг собственного кода, что делает использование различных API прозрачным.

Я предлагаю, если вы не найдете Библиотеку самостоятельно, вам придется либо использовать грубую силу, как вы ее называете, либо вызвать собственный API с использованием JNI для каждой платформы.

Ответ 5

Еще две опции, которые в настоящее время используют опрос:

Однако, поскольку оба проекта имеют большие активные сообщества, они, скорее всего, будут обновлены в будущем для поддержки Java 7 WatchService (FileSystem.newWatchService()), который использует, используя средства оповещения базовой платформы, если они есть.

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