我正在使用NSFileManager复制一些数据:
success = [manager copyItemAtPath:[dirToCopyFrom stringByAppendingPathComponent:file] toPath:[dirToCopyTo stringByAppendingPathComponent:file] error:©Error];
但是,NSFileManager似乎无法阻止此过程。有办法吗?
由于
答案 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似乎不赞成使用等效功能替代的方法。