2011-05-13 39 views
5

我想编写一个OSX(Snow Leopard)应用程序,该应用程序在特定目录中的文件发生更改时接收通知,并且我想要访问已更改的特定文件的路径。是否有一个用于处理递归监视的File System Events/kqueue的objc库封装器?

我知道我可以使用File System Eventskqueue来做到这一点。前者不提供哪些特定文件发生更改的细节(要求我创建我正在观看的目录的快照,然后对其进行扫描以找出哪个文件已更改)。后者不支持递归监视(要求我递归地将监视添加到父目录中的每个文件和目录)。

我已经看过处理快照/递归乐趣的图书馆,但找不到任何图书馆。 UKKQueue看起来像低层次kqueue东西的一个很好的包装,但似乎没有做递归。相同的GTMFileSystemKQueueSCEvents看起来像是一个很好的包装File System Events,但似乎无法处理找出更改的特定文件。

有没有一个库可以满足我的需求,适用于这两种技术的objc项目?

+0

> OSX 10.7您可以使用:FSEvents。它也调度原始文件路径。 – eonist 2016-04-09 07:40:36

回答

0

我结束了使用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:)]; 
} 
+0

我也像你一样使用GTMFileSystemKQueue。但是我在TextEdit中更改文件,并且没有事件在我的应用程序中响应。你能提供一些建议吗? – scorpiozj 2012-08-17 06:56:03

相关问题