C'è un buon wrapper Biblioteca OBJC per gli eventi del file system / kQueue che gestisce ricorsiva a guardare per me?

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

Domanda

Voglio scrivere un'app di OSX (Snow Leopard) che riceve le notifiche quando vengono modificati i file all'interno di una directory specifica e voglio accedere al percorso del file specifico che è stato modificato.

So che posso farlo usando File System Events o kqueue. Il primo non fornisce i dettagli di cui il file specifico è cambiato (che richiede di costruire un'istantanea della directory che sto guardando e poi lo scannerizza per scoprire quale file è cambiato). Quest'ultimo non supporta la guardia ricorsiva (che richiedeva di aggiungere ricorsivamente orologi ad ogni file e directory all'interno della directory principale).

Ho dato un'occhiata alle biblioteche che gestiscono il divertimento dell'istantanea / recupero per me, ma non riesco a trovarne nessuno. UKKQueue sembra un buon involucro per la roba di kqueue di basso livello, ma non sembra fare la ricorsione. Lo stesso per GTMFileSystemKQueue. SCEvents sembra un buon involucro per File System Events ma non sembra gestire lo scoprire il file specifico che è cambiato.

C'è una biblioteca che fa quello che voglio ed è adatto per un progetto OBJC per una di queste tecnologie?

È stato utile?

Soluzione

Ho finito usando GTMFileSystemKQueue Dopo aver scoperto quanto è facile per iterare ricorsivamente su una directory in 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:)];
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top