我已经使用SCEvents:https://github.com/mz2/SCEvents实现了文件监视部件--在创建、修改、删除或重命名文件时通知我如下:
2014-02-11 16:08:38.725 TestSCEvent10-22995:403 SCEvent { eventId = 3182336,eventPath =/Users 1/Desktop,eventFlags = 131328 }
它返回父目录的路径。如何获得修改文件的完整路径?
发布于 2014-02-11 12:31:09
在SCEvents.m文件中
将kFSEventStreamCreateFlagFileEvents常量FSEventStreamCreate添加到FSEventStreamCreate标志中,如下所示:
static FSEventStreamRef _create_events_stream(SCEvents *watcher, CFArrayRef paths, CFTimeInterval latency, FSEventStreamEventId sinceWhen)
{
FSEventStreamContext callbackInfo;
callbackInfo.version = 0;
callbackInfo.info = (void *)watcher;
callbackInfo.retain = NULL;
callbackInfo.release = NULL;
callbackInfo.copyDescription = NULL;
return FSEventStreamCreate(kCFAllocatorDefault,
&_events_callback,
&callbackInfo,
paths,
sinceWhen,
latency,
kFSEventStreamCreateFlagUseCFTypes | kFSEventStreamCreateFlagWatchRoot |kFSEventStreamCreateFlagFileEvents);
}kFSEventStreamCreateFlagFileEvents 请求文件级通知。您的流将接收有关您正在监视的层次结构中的单个文件的事件,而不仅仅是接收目录级别的通知。小心使用此标志,因为它会产生比没有它更多的事件。可在OSXv10.7及更高版本中获得。 在FSEvents.h中申报。 讨论 可以传递给FSEventStreamCreate.()函数的标志,以修改正在创建的流的行为。
将更改eventPath以输出完整的文件路径。
更新:
在SCEvents.m文件中也有延迟设置。
//常数静态const CGFloat SCEventsDefaultNotificationLatency = 3.0;
它可以设置为3.0。我把我的定在8点。
“延迟”参数,该参数指示在事件发生后转发事件的等待时间;这减少了事件的数量,并减少了客户端看到“中间”状态的可能性,例如在对文件进行“安全保存”、创建包或通过Safari下载文件时出现的情况。
https://stackoverflow.com/questions/21708559
复制相似问题