【问题标题】:How to determine if a file copy is completed using cocoa如何使用可可确定文件复制是否完成
【发布时间】:2012-02-04 08:11:20
【问题描述】:

我正在使用 Foundation 框架和 FSEvents API 在 XCode 中为 MAC 开发文件夹监视应用程序。在打开文件进行其他操作之前,我需要知道文件是否已完全复制到目标位置。有什么办法知道吗?请指教

【问题讨论】:

    标签: objective-c macos file fsevents


    【解决方案1】:

    我注意到 FSEvents API 在开头发送“create”事件,在结尾发送“create-and-modify”。在我的项目中,我使用了零延迟的 FSEventsStream,并在创建时使用了“NoDefer”标志。仅观察“修改”事件可能会为您提供文件复制已完成的信息。

    【讨论】:

    • 使用“lsof”将毫无意义,因为不同的进程可能会以未定义的顺序打开和关闭文件。此外,您还需要过滤这些进程名称。
    • “Finder”可能会在复制完成后长时间打开文件。
    【解决方案2】:

    从简单地研究FSEvents API 我会说你想要的东西是不可能的。不过,我可能弄错了,我自己从未使用过 FSEvents。 this question的提问者通过lsof单独监控新文件解决了问题。

    【讨论】:

      【解决方案3】:

      您可以检查您要打开的文件是否存在? 并采取相应的行动。

      【讨论】:

        猜你喜欢
        • 2010-10-14
        • 1970-01-01
        • 1970-01-01
        • 2013-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-27
        相关资源
        最近更新 更多