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

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

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

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

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

1 Ответ

0 голосов
/ 17 мая 2011

Я использовал 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:)];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...