【问题标题】:Stop NSFileManager process停止 NSFileManager 进程
【发布时间】:2010-12-13 20:32:49
【问题描述】:

我正在使用 NSFileManager 复制一些数据:

success = [manager copyItemAtPath:[dirToCopyFrom stringByAppendingPathComponent:file] toPath:[dirToCopyTo stringByAppendingPathComponent:file] error:&copyError];

但是,NSFileManager 似乎没有提供停止此过程的方法。有什么办法吗?

谢谢

【问题讨论】:

    标签: cocoa nsfilemanager


    【解决方案1】:

    不是NSFileManager,不是。你必须降到较低级别的FSCopyObjectAsync函数。

    有关如何使用此功能的示例,请查看this question

    至于如何取消复制,您要获得的复制回调的第一个参数是FSFileOperationRef。将该参数作为参数传递给FSFileOperationCancel() 应该会取消复制。 (见this CocoaBuilder.com thread for more info

    【讨论】:

    • iOS 的替代方案?据我了解,这仅适用于 Mac OS...
    【解决方案2】:

    这是一个相当古老的问题,但我只是偶然发现了它,因为我遇到了完全相同的问题;我想在 Carbon 方法上使用 NSFileManager 并实现手动递归复制,因为要处理的情况太多了,并且 NSFileManager 在解决文件操作中的错误方面做得很好(例如,在卷之间移动,移动到已安装的网络路径等)。基本上,您可以通过引发错误来停止 NSFileManager。它不漂亮,但它工作正常。例如。我使用 NSFileManager 将目录从一个位置移动到另一个位置,并为用户提供了取消操作的选项;为了解决 NSFileManager 的“不可取消”问题,我只是在复制目标目录时重命名目标目录; NSFileManager 引发错误,复制操作完全停止。不过,这仅适用于卷或副本之间的移动(在执行复制或复制删除的情况下),因为对于卷内的移动,OSX 只是进行重命名,这实际上是即时的。

    【讨论】:

      【解决方案3】:

      我尝试按照上一篇文章的建议移动文件,但移动不会导致 copyItemAtURL 返回错误。似乎 Apple 弃用了一种无法替代等效功能的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-15
        • 2012-08-22
        • 2012-02-23
        • 2018-10-23
        • 2022-01-14
        相关资源
        最近更新 更多