【问题标题】:NSFileWrapper and plain, old file handlesNSFileWrapper 和普通的旧文件句柄
【发布时间】:2014-04-18 02:57:27
【问题描述】:

我们正在将一个包含大量跨平台代码的应用移植到 Cocoa。必须使用直接处理磁盘上文件以进行加载/保存的低级文件处理例程。

由于NSFileWrapper 旨在通过NSData 呈现内存中文件的内容,并抽象出实际的磁盘文件细节,我们不能直接使用它,对吧?

所以为了能够使用我们的低级文件处理代码

  • fopen()
  • fread()

以及我们正在考虑的类似 ANSI-C 内容

  1. 使用NSDocumentNSFileWrapper API,
  2. 将文件包装器中的NSData 写回临时文件。文件夹
    (例如~/Library/Caches/
  3. 交出那个温度。文件 (~100k .. 1MB) 到较低级别。

写入文件的工作方式与此类似——反之亦然。

现在 - 这种方法是直接访问NSFileWrapper 所代表的文件 的最简单方法吗?我们是否忽略了文件包装器中的一些 API?

我们是否会遇到任何麻烦 - 尤其是沙盒和 iCloud..?

由于我们希望支持包含超过 1 个文件的文件包,因此我们希望坚持使用 NSDocument 中基于文件包装器的 API,而不是使用基于 NSURL 的方法。

感谢任何反馈/批评!

【问题讨论】:

    标签: cocoa nsurl nsdocument appstore-sandbox nsfilewrapper


    【解决方案1】:

    我没有直接回答您的问题,但我有一些必读的内容供您阅读:File System Programming Guide 对可用的各种机制进行了深入的解释。我会特别注意关于File Coordinators 的部分(由NSDocument 使用,比试图破解NSDocument 以获得它的一些功能更好)和Reading and Writing Files Without File Coordinators 的技术,其中包括安全,使用 Grand Central Dispatch 进行异步文件访问。

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-06-03
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 2013-12-04
      • 2017-08-14
      • 2020-02-12
      • 2016-02-05
      • 1970-01-01
      相关资源
      最近更新 更多