【发布时间】:2011-10-20 00:56:41
【问题描述】:
非常简单的问题,但在 Apple 的文档中似乎并不清楚。
writeToFile:atomically: for NSData、NSArray 等会覆盖文件上的现有数据吗?
【问题讨论】:
标签: objective-c ios
非常简单的问题,但在 Apple 的文档中似乎并不清楚。
writeToFile:atomically: for NSData、NSArray 等会覆盖文件上的现有数据吗?
【问题讨论】:
标签: objective-c ios
是的。 writeToFile:atomically: 会。
【讨论】:
方法writeToFile:atomically: 总是覆盖文件,不管atomically:是或否。
来自Apple docs 的信息(NSData,“保存数据”部分):
NSData 类及其子类提供了快速和 轻松将其内容保存到磁盘。为了最大限度地降低数据丢失的风险, 这些方法提供了以原子方式保存数据的选项。原子 写保证数据要么完整保存,要么 完全失败。原子写入首先将数据写入 临时文件。如果此写入成功,则该方法移动 临时文件到其最终位置。
没有关于检查文件是否存在的消息。
例如,对于docs(NSFileManager,讨论部分)中的方法copyItemAtPath:toPath:error:,专门写了关于此类检查:
如果dstPath已经存在同名文件,这个方法 停止复制尝试并返回相应的错误。
【讨论】: