Есть ли хорошая оболочка библиотеки objc для событий файловой системы/kqueue, которая обрабатывает для меня рекурсивное наблюдение?

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

Вопрос

Я хочу написать приложение OSX (Snow Leopard), которое будет получать уведомления при изменении файлов в определенном каталоге, и мне нужен доступ к пути к конкретному файлу, который был изменен.

Я знаю, что могу сделать это, используя либо File System Events или kqueue.Первый не предоставляет подробностей о том, какой именно файл был изменен (требуется от меня создать снимок каталога, который я просматриваю, а затем отсканировать его, чтобы узнать, какой файл изменился).Последний не поддерживает рекурсивное наблюдение (требующее от меня рекурсивного добавления наблюдения к каждому файлу и каталогу в родительском каталоге).

Я искал библиотеки, которые справлялись бы со снимками/рекурсиями, но не нашел ни одной. UKKQueue выглядит как хорошая обертка для низкого уровня kqueue вещи, но, похоже, не выполняет рекурсию.То же самое для GTMFileSystemKQueue. SCEvents выглядит как хорошая обертка для File System Events но, похоже, не удается обнаружить конкретный файл, который изменился.

Есть ли библиотека, которая делает то, что я хочу, и подходит для проекта objc для любой из этих технологий?

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

Решение

в итоге я использовал GTMFileSystemKQueue после того, как я узнал, насколько легко рекурсивно перебирать каталог в objc:

// Create a directory enumerator for the given top level directory
NSDirectoryEnumerator *de = [[NSFileManager defaultManager] enumeratorAtPath:dir];

// Add a kqueue on every file and folder below the top level
NSString *file;
while ((file = [de nextObject])) {
    [[GTMFileSystemKQueue alloc] initWithPath:[dir stringByAppendingString:file]
                                    forEvents:kGTMFileSystemKQueueAllEvents
                                acrossReplace:YES
                                       target:self
                                       action:@selector(fileSystemKQueue:events:)];
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top