我想编写一个OSX(Snow Leopard)应用程序,该应用程序在特定目录中的文件发生更改时接收通知,并且我希望访问已更改的特定文件的路径。
我知道我可以使用File System Events
或kqueue
执行此操作。前者没有提供更改哪个特定文件的详细信息(要求我构建我正在观看的目录的快照,然后扫描它以找出更改的文件)。后者不支持递归观看(要求我以递归方式将监视添加到父目录中的每个文件和目录)。
我已经找到了能够为我处理快照/递归乐趣的库,但找不到任何库。 UKKQueue
看起来像是低级kqueue
内容的好包装,但似乎没有进行递归。 GTMFileSystemKQueue
也是如此。 SCEvents
看起来像File System Events
的好包装,但似乎无法找到更改的特定文件。
是否有一个库可以满足我的要求并且适合这些技术的objc项目?
答案 0 :(得分:0)
在我发现在objc中递归迭代目录是多么容易之后,我最终使用了GTMFileSystemKQueue
:
// 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:)];
}