是否有一个好的 objc 库包装器用于文件系统事件/kqueue 来为我处理递归监视?
-
12-11-2019 - |
题
我想编写一个 OSX(雪豹)应用程序,当特定目录中的文件发生更改时,该应用程序会收到通知,并且我希望访问已更改的特定文件的路径。
我知道我可以使用以下任一方法来做到这一点 File System Events
或者 kqueue
. 。前者不提供更改的特定文件的详细信息(要求我构建我正在监视的目录的快照,然后扫描它以找出更改的文件)。后者不支持递归监视(要求我递归地将监视添加到父目录中的每个文件和目录)。
我已经寻找过为我处理快照/递归乐趣的库,但找不到任何库。 UKKQueue
看起来像是一个很好的低级别包装器 kqueue
东西,但似乎没有做递归。同样适用于 GTMFileSystemKQueue
. SCEvents
看起来像是一个很好的包装 File System Events
但似乎无法找出更改的特定文件。
是否有一个库可以满足我的需求并且适合这些技术的 objc 项目?
解决方案
我最终使用了 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:)];
}
不隶属于 StackOverflow