HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iphone – 如何覆盖文件与NSFileManager复制时?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用这个方法来复制一个文件

[fileManager copyItemAtPath:sourcePath toPath:targetPath error:&error];

我想覆盖一个文件,当它已经存在。此方法认行为是抛出异常/错误“File Exists”。当文件存在时。没有指定应该覆盖的选项。

那么,最安全的方法是什么呢?

我会首先检查文件是否存在,然后删除它,然后尝试复制?这有一个危险,即应用程序或设备在纳米秒内关闭,直到文件删除,但新文件尚未复制到该位置。然后没有什么。

也许我必须先更改新文件名称,然后删除旧的,然后重新更改新的名称?同样的问题。如果在这个纳秒的应用程序或设备关闭重命名会发生怎么办?

解决方法

@H_674_20@ 你想在这种情况下做一个原子保存,这将是最好的通过使用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复制时?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。