我希望在更改文件时监视目录(数千个文件,大约有5个子目录级别)。我知道我可以使用FSEvents API监视目录,以便在该目录中更改文件,但我似乎无法弄清楚如何确定哪些文件发生了变化。 这个 参考建议我构建一个二叉树并在每次触发事件时遍历树,就是那个 最好 确定哪些文件被更改的方法?如果不是,那是什么 更好 备择方案?
是否更好地递归扫描目录并将kqueue附加到每个文件?我不确定这对成千上万的文件有多好?
我希望在更改文件时监视目录(数千个文件,大约有5个子目录级别)。我知道我可以使用FSEvents API监视目录,以便在该目录中更改文件,但我似乎无法弄清楚如何确定哪些文件发生了变化。 这个 参考建议我构建一个二叉树并在每次触发事件时遍历树,就是那个 最好 确定哪些文件被更改的方法?如果不是,那是什么 更好 备择方案?
是否更好地递归扫描目录并将kqueue附加到每个文件?我不确定这对成千上万的文件有多好?
我用过 UKKQueue 在混合结果之前。
我最近意识到一个更好的解决方案,但我没有尝试过。如果您只需要针对Lion,我认为这样做的最佳实践方法是使用 NSFileCoordinator
。你实现的方法 NSFilePresenter
指出你感兴趣的目录( presentedItemURL
当子项移动/更改/被删除时,系统将通知您(通过类似方法) presentedSubitemDidChangeAtURL:
)
如果你走那条路,我很想知道这是怎么回事。
我用过 UKKQueue 在混合结果之前。
我最近意识到一个更好的解决方案,但我没有尝试过。如果您只需要针对Lion,我认为这样做的最佳实践方法是使用 NSFileCoordinator
。你实现的方法 NSFilePresenter
指出你感兴趣的目录( presentedItemURL
当子项移动/更改/被删除时,系统将通知您(通过类似方法) presentedSubitemDidChangeAtURL:
)
如果你走那条路,我很想知道这是怎么回事。
如果您使用创建流 kFSEventStreamCreateFlagFileEvents 然后,您将获得每个文件更改的事件,而不仅仅是对已监视目录的更改的通知。不幸的是,这仅适用于OSX 10.7及更高版本。