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

Jih*_*ang 93 objective-c ios

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

writeToFile:atomically:用于NSData,NSArray等覆盖在文件上现有的数据?

BJ *_*mer 211

是.它会.

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

  • +1"记录"你的额外字符:) (58认同)
  • 无论你是否原子地这样做都没关系; 在任何一种情况下,文件都将被新数据完全覆盖. (20认同)

Igo*_*gor 5

方法writeToFile:atomically: 始终覆盖文件,而不管atomically:是或否。

来自Apple文档的信息(NSData,“保存数据”部分):

NSData类及其子类提供了快速轻松地将其内容保存到磁盘的方法。为了最大程度地减少数据丢失的风险,这些方法提供了自动保存数据的选项。原子写入可确保数据全部保存或完全失败。原子写入首先将数据写入临时文件。如果此写入成功,则该方法将临时文件移至其最终位置。

关于检查文件是否存在一无所知。

例如,对于方法copyItemAtPath:toPath:error:文档(的NSFileManager,部分讨论)而编写的关于这种检查:

如果dstPath中已经存在同名文件,则此方法将停止复制尝试并返回适当的错误。