
[fileManager copyItemAtPath:sourcePath topath:targetPath error:&error];
我想覆盖一个文件,当它已经存在。此方法的默认行为是抛出异常/错误“file Exists”。当文件存在时。没有指定应该覆盖的选项。
那么,最安全的方法是什么呢?
我会首先检查文件是否存在,然后删除它,然后尝试复制?这有一个危险,即应用程序或设备在纳米秒内关闭,直到文件被删除,但新文件尚未复制到该位置。然后没有什么。
也许我必须先更改新文件的名称,然后删除旧的,然后重新更改新的名称?同样的问题。如果在这个纳秒的应用程序或设备关闭和重命名不会发生怎么办?
解决方法 你想在这种情况下做一个原子保存,这将是最好的通过使用NSData或Nsstring的writetofile:atomically:方法(及其变体):NSData *myData = ...; //fetched from somewhere[myData writetofile:targetPath atomically:YES];
或者对于Nsstring:
Nsstring *myString = ...;NSError *err = nil;[myString writetofile:targetPath atomically:YES enCoding:NSUTF8StringEnCoding error:&err];if(err != nil) { //we have an error.} 总结 以上是内存溢出为你收集整理的iphone – 如何覆盖文件与NSFileManager复制时?全部内容,希望文章能够帮你解决iphone – 如何覆盖文件与NSFileManager复制时?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)