iphone – 如何覆盖文件与NSFileManager复制时?

iphone – 如何覆盖文件与NSFileManager复制时?,第1张

概述我使用这个方法来复制一个文件: [fileManager copyItemAtPath:sourcePath toPath:targetPath error:&error]; 我想覆盖一个文件,当它已经存在。此方法的默认行为是抛出异常/错误“File Exists”。当文件存在时。没有指定应该覆盖的选项。 那么,最安全的方法是什么呢? 我会首先检查文件是否存在,然后删除它,然后尝试复制?这有一个危 我使用这个方法来复制一个文件:

[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复制时?所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1087574.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存