我在这里创建了一个简单的文件系统观察者,使用Mac文件系统事件API如下所示: Apple Developer Doc 。我的问题是标题。如何获得改变的事情的道路? EventPaths数组仅向我提供我本质上观看的父目录(或其设置)的路径。但不是修改的底层目录条目。

我可以使用回调,即。:

   static void mycallback(
            ConstFSEventStreamRef streamRef,
            void *clientCallBackInfo,
            size_t numEvents,
            void *eventPaths,
            const FSEventStreamEventFlags eventFlags[],
            const FSEventStreamEventId eventIds[])
.

我认为也许名称可以从其中一个项目中提取?

编辑:

例如,有人可能会发现创建文件,在哪个情况下是

kfseventstreameventflagitemcreated

被提升。但我应该如何了解该项目的实际名称? (类似于其他事件,就像删除物品时的那样。)。

编辑2:

我开始认为它不可能做我想要的事情。来自 FS Tech概述

“带走的重要点是通知的粒度在目录级别。它只告诉您目录中的某些东西已更改,但不会告诉您更改了什么。”

aka。 Bugger。

欢呼,

ben。

有帮助吗?

解决方案

实际上,这是可能的,但仅在10.7+上。查看kfseventstreamcreateflagfilevents for for fseventstreamCreate(文档)。

其他提示

不幸的是,当我发现时,它是不可能的;查看 FS技术概述用于解释/动机。围绕作品是拍摄目录的快照,然后只要发现更改,请使用新的快照并与原件差异,找到更改的特定目录条目(及其名称)。

编辑:可以>= 10.7(参见所选答案)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top