将writeToFile:原子地:覆盖数据?

时间:2011-10-20 00:56:41

标签: objective-c ios

非常简单的问题,但在Apple的文档中似乎并不清楚。

writeToFile:atomically:NSDataNSArray是否会覆盖文件中的现有数据?

2 个答案:

答案 0 :(得分:204)

是。它会。

以下是一些传递30个字符限制的字符。

答案 1 :(得分:4)

方法writeToFile:atomically: 始终覆盖文件,无论atomically:是或否。

来自Apple docs的信息(NSData,部分"保存数据"):

  

NSData类及其子类提供快速和   轻松将其内容保存到磁盘。为了将数据丢失的风险降至最低,   这些方法提供了以原子方式保存数据的选项。原子   写保证数据可以全部保存,也可以保存   彻底失败了。通过将数据写入a来开始原子写入   临时文件。如果此写入成功,则该方法移动   临时文件到最终位置。

没有关于检查文件是否存在的说法。

例如,对于docs中的方法copyItemAtPath:toPath:error:(NSFileManager,讨论部分),专门针对此类检查编写:

  

如果dstPath上已存在同名文件,则此方法   停止复制尝试并返回相应的错误。