Обнаружение изменений файловой системы в Samba share с Java в Windows

StackOverflow https://stackoverflow.com/questions/2400117

Вопрос

для недавнего проекта мне нужно обнаружить изменения файловой системы в сопоставленном общем ресурсе Samba из java в Windows:Создает, обновляет и удаляет.На данный момент я использую опрос папок, который поддерживает список файлов и их измененную временную метку для поиска событий.

Но моя проблема в том, что этот опрос папки заглядывает в папку только в определенное время (например, каждые 10 секунд), поэтому обновленный файл может обновляться дважды между двумя опросами без распознавания.

Есть ли какой-нибудь способ получать события из Windows внутри Java всякий раз, когда файловое событие происходит в этом общем ресурсе mappep Samba?

Спасибо!

Это было полезно?

Решение

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

Java 7 будет иметь новый API ввода-вывода ДЖСР-203 у которого есть API просмотра файлов который будет либо использовать собственный Уведомления ОС или опрос если уведомления не поддерживаются для обнаружения изменений файлов.

А пока вы можете посмотреть, реализовал ли кто-нибудь библиотеку, которая позволяет вам подключаться к уведомлениям операционной системы через JNI.Я думаю, что IntelliJ IDEA использует для этой цели собственную библиотеку.

Глядя на Sourceforge, я нашел jfilenotify но я никогда им не пользовался.

В качестве альтернативы вы могли бы увеличьте частоту дискретизации (но это начнет забивать вашу файловую систему) или измените способ записи файлов, добавив номер версии к имени файла/папке, чтобы вы могли легко определить, когда что-то изменилось.

Другие советы

Согласно эта запись на форуме Командный руководитель Джнивраппер способен сделать это так, как я хочу.Я только что купил копию.Благодарю вас и

Приветствую, ГХад

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top