【问题标题】:writeToFile:atomically: method appends to currently exisiting file?writeToFile:atomically: 方法追加到当前现有文件?
【发布时间】:2013-03-07 17:45:50
【问题描述】:

看起来只要方法调用发生在同一个应用程序运行时,writeToFile 方法就会附加到当前存在的文件路径。这是真的吗?

是否有任何其他方法可以确保在应用程序会话运行时附加到现有文件?我希望在新会话中覆盖该文件。

仅供参考,我使用 NSMutableDictionary 作为 writeToFile 消息的接收者。

【问题讨论】:

  • 没有。 writeToFile:atomically: 总是覆盖任何现有文件,如果有的话。
  • 现在已弃用。
  • 会话由什么组成?会话可以跨应用启动吗?
  • 请给我们看代码。
  • @AnoopVaidya NSDictionary writeToFile:atomically: 未被弃用。

标签: ios objective-c file writetofile


【解决方案1】:

为确保每个新会话都覆盖该文件,只需在新会话开始时删除该文件即可。

要追加到文件,您可以使用NSOutputStream 写入数据。打开文件进行追加。但是,如果您正在从NSDictionary 编写 plist 文件,那么这将不起作用。更好的解决方案是在应用程序启动时加载字典,在应用程序运行时将其更新到内存中,并在应用程序进入后台时将字典写入文件。这假设您的“会话”不是由应用启动(或后台/前台转换)定义的。

【讨论】:

  • 我实际上是从 NSDictionary 写一个 plist 文件。我在应用程序启动时分配和初始化字典,并在写入相同文件名时重复向字典添加新对象。我想这就是为什么我目前似乎正在附加到现有文件的原因。
  • 看起来像是追加,但实际上您只是用代表更新字典的新 plist 替换现有文件。我仍在尝试了解您为什么要继续编写文件。考虑到您的要求,这没有任何意义。
  • 啊,有道理!这是一种不好的方法吗?
  • 应用进入后台时只写一次文件。就是这样。根据您所说,当用户在前台积极使用应用程序时,没有理由继续更新应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-23
  • 2021-02-23
  • 2018-04-17
  • 2011-02-19
  • 2018-04-08
  • 1970-01-01
相关资源
最近更新 更多