3

编写一个归档实用程序,我需要能够在 Mac OS X 文件系统上读写资源分支。

曾经存在过FSOpenFork和相关的功能,但当前在线文档和 Xcode (v7.1) 附带的文档甚至不再提及这些功能。

此外,诸如此类的功能GetEOF甚至不再适用于 64 位应用程序。

目前有哪些 API 可用于读取和写入资源分叉?如果可以,请提供函数的声明,以打开、读取、写入、关闭和查询/设置 EOF 和当前 r/w 偏移量。

注意:虽然我添加了自己的答案,列出了替换 FS... 函数,但如果其他人可以添加更多方法,例如使用 CFURL API 或命名的 fork 方法(它使用特殊的文件名,但我一直忘记它是如何工作的)。

4

2 回答 2

4

您可以通过附加/..namedfork/rsrc. (这在 . 中定义<sys/paths.h>_PATH_RSRCFORKSPEC)虽然丑陋,但它确实使 shell 活动能够访问资源叉,即使存在不知道的资源叉。例子:

ls -l myfile/..namedfork/rsrc
cp myfile/..namedfork/rsrc ...

资源分支也可用作com.apple.ResourceFork扩展属性。XATTR_RESOURCEFORK_NAME(这在中定义<sys/xattr.h>。)特别是,f/getxattr()可以f/setxattr()读写资源叉。_PATH_RSRCFORKSPEChack 实际上是由 XNU 内核根据扩展属性实现的。

于 2017-02-14T02:22:28.023 回答
2

头文件“ Files.h ”列出了可用的FS...函数。

这里有几个替换:

  • SetFPos->FSSetForkPosition
  • GetEOF->FSGetForkSize
  • FSRead->FSReadFork
于 2015-12-28T16:26:03.210 回答