2010-06-04 133 views
8

好的:我正在iPhone OS应用程序中实现文件共享,当然这意味着文件系统监视。好极了!使用kqueue()监视目录中的更改的最佳方法是什么?

基本上,操作系统从用户在iTunes中操作文件到我的应用程序部分时可以访问的目录复制和/或删除。因此,我需要通过像kqueue()这样的高效机制来监控目录的变化。

我该如何实现这一点,以便我知道文件已完成复制?我在想:

  • 监视kqueue()
  • 在事件中,启动(或重置现有)超时。
  • 超时后,请继续工作。

但是有没有更好的方法来确保我不会跨越操作系统的脚趾?

回答

3

这只是一个部分答案,但可能有些用处。

  1. kqueue机制确实可以作为应用程序的Documents目录被修改时通知的一种手段。

  2. 一旦目录被修改并且在复制文件完成之前,通知就会立即生效。我在测试中观察到了这一点。

不幸的是,复制完成后没有任何形式的通知。至少,我没有找到。

我希望苹果能够实现的是需要有一个“iTunes同步”通知,因为这似乎是一个普遍问题。

循环检查新文件的修改时间是否没有变化可能会起作用,但只能在大部分时间。在某些极端情况下,iOS可以暂停在后台完成各种耗时的工作。

如果有办法检查某个文件是否被另一个进程打开,那么这就足够了。

杰夫

相关问题