停止NSFileManager进程

时间:2010-12-13 20:32:50

标签: cocoa nsfilemanager

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

success = [manager copyItemAtPath:[dirToCopyFrom stringByAppendingPathComponent:file] toPath:[dirToCopyTo stringByAppendingPathComponent:file] error:&copyError];
但是,NSFileManager似乎无法阻止此过程。有办法吗?

由于

3 个答案:

答案 0 :(得分:4)

不是NSFileManager,不是。您必须降至较低级FSCopyObjectAsync功能。

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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