0

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

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

然而 NSFileManager 似乎没有提供停止这个过程的方法。有办法吗?

谢谢

4

3 回答 3

4

不与NSFileManager,不。您必须下降到较低级别的FSCopyObjectAsync功能。

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

至于如何取消复制,复制回调的第一个参数是FSFileOperationRef. 将该参数作为参数传递给FSFileOperationCancel()应该取消副本。(有关更多信息,请参阅此 CocoaBuilder.com 线程

于 2010-12-13T20:57:51.583 回答
1

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

于 2011-12-16T16:58:09.897 回答
0

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

于 2013-12-05T19:32:35.000 回答