Смотреть каталог для изменений файлов


Я хочу отслеживать каталог (из тысяч файлов, с примерно 5 уровнями вложенных каталогов) для того, когда файлы изменяются. Я знаю, что могу использовать API FSEvents для отслеживания каталога, когда файлы изменяются внутри этого каталога, но я не могу понять, как определить, какой файл(ы) изменился. Эта ссылка предполагает, что я строю двоичное дерево и пересекаю его каждый раз, когда запускается событие, является ли это лучшим способом определить, какие файлы были изменены? Если нет, то что есть ли некоторыеЛучшие альтернативы?

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

2 11

2 ответа:

Я использовал UKKQueue раньше со смешанными результатами.

Недавно я узнал о лучшем решении, но я не пробовал этого. Если вам нужно только нацелиться на Льва, Я думаю, что новый наилучший способ сделать это-использовать NSFileCoordinator. Вы реализуете методы NSFilePresenter, чтобы указать, какой каталог вас интересует (свойство presentedItemURL), и система уведомит вас, когда подпункт перемещается / изменяется/удаляется (с помощью таких методов, как presentedSubitemDidChangeAtURL:)

Я хотел бы услышать, как это сработает, если вы пойдете этим путем.

Если вы создадите свой поток с помощью kFSEventStreamCreateFlagFileEvents, то вы получите события для изменений в каждом файле, а не просто уведомление об изменении в наблюдаемом каталоге. К сожалению, это доступно только в OSX 10.7 и более поздних версиях.