WatchService / Удаление / Файл или Каталог? - PullRequest
9 голосов
/ 20 ноября 2011

Я хочу определить, был ли удален файл или каталог.Очевидно, что я не могу использовать Files.isDirectory (Path) и его эквивалент для файлов, потому что файл / каталог уже удален.

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

Редактировать: Я думаю, что любое другое решение относительно проверки строкового представления имен файлов и каталогов подвержено ошибкам.

1 Ответ

3 голосов
/ 20 ноября 2011

Храните локальную копию метаданных в каталоге, который вы просматриваете, - просто из списка записей вместе с тем, является ли каждый файл файлом или каталогом, а также с любыми другими атрибутами, которые могут вас заинтересовать после удаления - например, размер или время последнего изменения. Затем вы можете обратиться к этим метаданным после получения уведомления об удалении.

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

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

...