NSFileWrapper和普通的旧文件句柄

时间:2014-03-13 11:41:57

标签: cocoa nsurl nsdocument appstore-sandbox nsfilewrapper

我们将带有大量跨平台代码的应用移植到Cocoa。使用直接处理磁盘上的文件以进行加载/保存的低级文件处理例程是必需的。

由于NSFileWrapper旨在通过NSData显示内存中文件的内容并抽象出实际的磁盘文件详细信息,我们无法直接使用它,对吗? / p>

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

  • fopen()
  • fread()

和我们正在考虑的类似ANSI-C的东西

  1. 使用NSFileWrapper
  2. NSDocument API
  3. 将文件包装器中的NSData写回temp。文件夹
    (例如〜/ Library / Caches /
  4. 交出那个温度。文件( ~100k .. 1MB )到较低级别。
  5. 文件的编写工作方式类似 - 只是相反。

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

    我们遇到了什么麻烦 - 特别是考虑沙盒和iCloud ......?

    由于我们要支持包含多个文件的文件包,我们更愿意在NSDocument中坚持使用基于文件包装器的API,而不是使用基于NSURL的文件包。方法

    任何反馈/评论家都赞赏!

1 个答案:

答案 0 :(得分:2)

我对你的问题没有直接的答案,但我确实有一些强制性的阅读:File System Programming Guide深入解释了各种机制。我会特别注意关于File Coordinators的部分(由NSDocument使用,并且比试图破解NSDocument只是为了获得它的某些功能更好)和{{{1}} 3}},包括使用Grand Central Dispatch进行安全的异步文件访问。

我希望这会有所帮助。