观察Objective-C中的文件或文件夹

Gar*_*ett 20 cocoa objective-c observer-pattern

收听文件夹或文件以查看是否已保存或是否添加了新文件的最佳方法是什么?

Rob*_*ger 32

如果您只想查看目录但不处理单个文件的监视,则FSEvents API是理想的选择.Stu Connolly为FSEvents C API提供了一个很棒的Objective-C包装器,它叫做SCEvents,你可以在这里得到它:

http://stuconnolly.com/blog/scevents-011/

FSEvents的优点在于您只需要观看一个文件夹,并且您将收到有关该文件夹的子文件夹层次结构中任何位置发生的任何更改的通知.

如果您需要文件级通知,则需要使用kqueues.Uli Kusterer有一个很棒的Objective-C包装器:

http://zathras.de/angelweb/sourcecode.htm#UKKQueue

这些方法中的任何一种都比直接使用C API更容易解决,这些方法并没有特别详细记录,而且有点迟钝.

如果你需要支持Tiger,你需要使用kqueues,因为在10.4中没有正式提供FSEvents API.

  • 自Mac OS 10.7 Lion以来,情况发生了变化.FSEvents现在支持文件级粒度,在创建事件流时使用kFSEventStreamCreateFlagFileEvents标志以获取有关特定文件更改的信息.FSEvent指南未反映这些更改,但[参考](http://developer.apple.com/library/mac/#documentation/Darwin/Reference/FSEvents_Ref/Reference/reference.html#//apple_ref/c/econst/kFSEventStreamCreateFlagFileEvents)做. (5认同)

cob*_*bal 6

尝试使用FSEvents,尽管它是一个C API

OS 10.5或更高版本