Existe um bom wrapper de biblioteca objc para eventos do sistema de arquivos/kqueue que lida com a observação recursiva para mim?

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

Pergunta

Quero escrever um aplicativo OSX (Snow Leopard) que receba notificações quando arquivos em um diretório específico forem alterados e quero acessar o caminho do arquivo específico que foi alterado.

Eu sei que posso fazer isso usando File System Events ou kqueue.O primeiro não fornece detalhes de qual arquivo específico foi alterado (exigindo que eu crie um instantâneo do diretório que estou monitorando e depois verifique-o para descobrir qual arquivo foi alterado).Este último não suporta observação recursiva (exigindo que eu adicione recursivamente observações a cada arquivo e diretório dentro do diretório pai).

Procurei bibliotecas que lidam com a diversão de instantâneo/recursão para mim, mas não consigo encontrar nenhuma. UKKQueue parece um bom invólucro para o nível baixo kqueue coisas, mas não parece fazer recursão.O mesmo para GTMFileSystemKQueue. SCEvents parece um bom invólucro para File System Events mas parece não conseguir descobrir o arquivo específico que foi alterado.

Existe uma biblioteca que faça o que eu quero e seja adequada para um projeto objc para qualquer uma dessas tecnologias?

Foi útil?

Solução

acabei usando GTMFileSystemKQueue depois que descobri como é fácil iterar recursivamente em um diretório no 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:)];
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top