C'è un buon wrapper Biblioteca OBJC per gli eventi del file system / kQueue che gestisce ricorsiva a guardare per me?
-
12-11-2019 - |
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?
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:)];
}
.