如何在iOS平台上监控文件更改?

时间:2014-02-17 11:25:44

标签: ios file monitor kqueue

我发现有些库可以监控mac上的文件更改,例如:https://github.com/bdkjones/VDKQueue 但我没能找到一个库来监控ios平台上的文件更改。

任何人都可以告诉我如何在objc包装器中监视文件更改。

感谢

2 个答案:

答案 0 :(得分:9)

iOS上的文件监控是通过创建GCD为您要监控的任何文件或文件夹调用“调度源”来实现的。在创建调度源时,您提供了三个有趣的事情:

  1. 指向文件或文件夹的文件描述符
  2. 标志,用于描述您希望收到通知的事件类型(文件已修改,文件已写入等)
  3. 发送这些事件通知的队列(主队列,后台队列等)
  4. 创建调度源后,您可以设置在事件发生时或源被取消(销毁)时要执行的代码块。在为事件发生时设置的块中,您可以确定发生了哪个事件(如果您注册了多个类型),并依次使用if ... else ... then或switch ... case语句。< / p>

    我正在创建一个简化过程的可移植Objective-C类,但与此同时,你应该看一下demo project I've put on GitHub。它显示了如何完成我所描述的内容。

    修改

    现在可以通过CocoaPods获得

    iMonitorMyFiles。要安装它,只需将以下行添加到Podfile:

    pod 'iMonitorMyFiles', '~> 0.1.0'
    

答案 1 :(得分:2)

查看`dispatch_sources' - 这是一种基于GCD的监控方式,例如文件系统:https://developer.apple.com/library/ios/documentation/General/Conceptual/ConcurrencyProgrammingGuide/GCDWorkQueues/GCDWorkQueues.html

我在Mac OS上使用它而不是kqueue,根据链接的文档,它也应该在iOS上使用。