复制时如何使用NSFileManager覆盖文件?
|
我正在使用此方法复制文件:
[fileManager copyItemAtPath:sourcePath toPath:targetPath error:&error];
我想覆盖一个已经存在的文件。该方法的默认行为是在文件存在时引发异常/错误“文件已存在”。没有选项指定要覆盖。
那么最安全的方法是什么?
我先检查文件是否存在,然后删除它,然后再尝试复制吗?这样做的危险是,删除文件后,应用程序或设备会在十亿分之一秒内关闭,但新文件尚未复制到该位置。然后什么都没有。
也许我必须先更改新文件的名称,然后删除旧文件,然后重新更改新文件的名称?同样的问题。如果在十亿分之一秒内应用程序或设备关闭并且没有重命名怎么办?
没有找到相关结果
已邀请:
9 个回复
黎喊病
或
\的
方法(及其变体)来实现:
或for2ѭ:
寇剩
根据参考文档,此方法“以确保不丢失数据的方式”将项目的内容替换为指定的URL。”(来自参考文档)。需要将原始文件复制到临时目录,因为此方法将移动原始文件。 这是关于ѭ7的NSFileManager参考文档
闲窍
破弯
第一行失败,如果该文件不存在,则将其忽略。如果第二行出现异常,它将按原样抛出。
谷起
循环中删除和复制文件有时无法正常工作
陷牡彭拈峰
壬驴拿歪竞
孝箱捆讨
通过这种方法,您可以决定如何处理现有文件(重命名/删除),然后继续进行复制。
鞋扣蚊冈借