Cocoa中类似于.NET中的FileSystemWatcher的替代方案是什么?

6

我正在开发一个Cocoa应用程序。我想要不断检查特定位置的文件内容是否已更改(类似于.NET中的FileSystemWatcher)。请问有什么解决方案吗?


3
只是一个建议:在英语中,“给我个解决方案”可能会显得有点粗鲁,而且暗示你可能没有自己寻找答案。在发布问题之前先在谷歌上搜索是良好的做法。 :-) - Quinn Taylor
7个回答

10

6

正如Diederik所说,FSEvents是苹果公司用于监听文件系统事件的Carbon API。有人创建了一个名为SCEvents的Cocoa/Objective-C包装器,它更容易使用。


1
作为一个小题外话,FSEvents 不是 Carbon API,它是 Core Services 框架的一部分。 - briankc

2

另一个选择是直接从/dev/fsevents火管中喝水。我正在开发一个应用程序,正是这样做的,并且效果非常好。您可以在文件更改、删除、移动、属性更改等情况下收到通知。尽管这不是一个“Cocoa”选项,因为它主要是C代码,但我们正在在Cocoa应用程序中使用它。


1

1

FSEvents非常好用,但它们用于监视文件夹。如果要监视单个文件,您需要查看kqueues。请在终端中尝试“man kqueue”。


SCEvents是寻找Cocoa解决方案的人的更好选择。 - Quinn Taylor
FSEvents仍然用于目录更改,而SCEvents似乎是FSEvents的包装器。问题要求监视单个文件。Kqueues更适合这个任务。上面提到的SCEvents链接还引用了UKKQueue,这也可能是一个不错的包装器。 - Jon Hess

1
请查看NSWorkspace类的文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接