从版本 8.1 到 Mountain Lion (10.8),操作系统支持一个名为“ Named Forks ”的概念。命名分叉相当于 Windows 中的“备用数据流”。
现在,互联网上对命名分叉与资源分叉以及命名分叉与扩展属性之间存在大量混淆。这是显示它们都是独立概念的时间表:
所有操作系统版本和所有 Apple 文件系统上始终存在数据分叉和资源分叉。如今,操作系统似乎唯一使用资源分叉的地方是为文件夹提供自定义图标。这将创建一个名为 的文件,该文件Icon\r带有零长度数据分叉和资源分叉中的图像数据。文件名包含实际的回车符!
在引入扩展属性之前,命名分叉已得到支持 7 年。
HFS+ 绝对支持命名分叉和扩展属性 8 年,尽管我不知道一个文件是否可以同时拥有这两种属性,或者它们是否与 Mavericks 之前的命名分叉和 Mavericks 之后的扩展属性相同。
命名分叉在 APFS 推出前 4 年就已被弃用。
命名叉子从来没有被广泛使用过。我编写了代码来尝试调用FSCreateFork文件和目录。无论是在 HFS+ 还是 APFS 卷上,无论我在 Big Sur 还是 Sierra 下运行它,它总是会失败并出现错误 -1402“Fork name 参数错误”。我无法访问其他操作系统版本。
所以由于我找不到测试的方法,而且网上的信息也很混乱,所以我无法谷歌它。
这里有专家知道 APFS 是否支持命名分叉吗?
在编写归档实用程序时,我需要能够在 Mac OS X 文件系统上读取和写入资源分支。
曾经存在FSOpenFork相关函数,但当前的在线文档和 Xcode (v7.1) 中包含的文档甚至不再提及这些函数。
此外,诸如此类的功能GetEOF甚至不再适用于 64 位应用程序。
目前有哪些 API 可用于读写资源分支?如果可以的话,请提供打开、读取、写入、关闭和查询/设置 EOF 和当前读写偏移量的函数声明。
注意:虽然我添加了自己的答案,列出了替换 FS... 函数,但如果其他人可以添加更多方法,例如使用 CFURL API 或命名 fork 方法(使用特殊的文件名,但我一直忘记它是如何工作的)。
过去,Macintosh OS 的一个怪癖是文件有两个“分叉”,一个“资源分叉”通过专用资源 API 保存软件使用的资源,另一个“数据分叉”保存普通的旧文件其他系统上的数据,包括二进制代码、纯文本文件中的文本等。
1998 年随 Mac OS 8.1 引入的HFS+ 的一个鲜为人知的功能是,您可以拥有任何文件的任意数量的命名分支。类似于 NTFS 的另一个鲜为人知的功能,称为“ADS”(备用数据流)。
来自维基百科:
HFS Plus 允许最多 255 个字符的文件名,以及类似于 NTFS 的n-forked 文件,尽管直到 2005 年,除了数据叉和资源叉之外几乎没有系统软件利用叉
Apple 似乎不再记录使用这些额外分叉的 API。
我们是否知道 Apple 是否以及何时正式弃用该功能?如果没有,我们是否知道 API 何时从文档中消失。