1

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

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

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

  • fopen()
  • fread()

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

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

文件的写入也可以类似地工作——反之亦然。

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

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

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

任何反馈/批评表示赞赏!

4

1 回答 1

2

对于您的问题,我没有直接的答案,但我确实为您提供了一些强制性阅读:文件系统编程指南对可用的各种机制进行了深入的解释。我会特别注意有关文件协调器的部分(由 使用NSDocument,并且比尝试破解NSDocument只是为了获得它的一些功能对您更好)和在没有文件协调器的情况下读取和写入文件的技术,其中包括安全的异步文件访问使用 Grand Central Dispatch。

我希望这有帮助。

于 2014-03-13T17:15:18.507 回答