Macos 使用HFS+;叫福克斯?
我知道Mac OS X中不推荐使用资源分叉 目前还不清楚不太知名和很少使用的命名fork是否也被弃用。HFS+实际上支持任意数量的任意长度的文件叉。(Mac命名的forks在概念上类似于Windows的备用数据流或“ADS”。) 无论是否已弃用,仍有理由了解如何创建、枚举、删除和以其他方式操作文件分叉 然而,我似乎找不到任何关于使用forks的api的信息 我所能找到的是,从终端和其他接受文件名或路径的地方,您可以使用语法Macos 使用HFS+;叫福克斯?,macos,api,hfs+,alternate-data-stream,file-forks,Macos,Api,Hfs+,Alternate Data Stream,File Forks,我知道Mac OS X中不推荐使用资源分叉 目前还不清楚不太知名和很少使用的命名fork是否也被弃用。HFS+实际上支持任意数量的任意长度的文件叉。(Mac命名的forks在概念上类似于Windows的备用数据流或“ADS”。) 无论是否已弃用,仍有理由了解如何创建、枚举、删除和以其他方式操作文件分叉 然而,我似乎找不到任何关于使用forks的api的信息 我所能找到的是,从终端和其他接受文件名或路径的地方,您可以使用语法/…namedfork/rsrc访问资源分支,直到最近还可以使用/rsrc
/…namedfork/rsrc
访问资源分支,直到最近还可以使用/rsrc
。我尝试用其他名称替换rsrc
,但我在终端中尝试的所有命令都失败了
在哪里可以找到旧的或非官方的API文档,以编程方式使用OSX中的命名forks
顺便说一句,谷歌搜索这个话题时,互联网上似乎有一个常见的误解。随机投机者说命名的fork是基于命名的文件属性构建的。事实并非如此。命名文件属性是一个全新的OSX特性。命名分叉早于OSX。事实上,命名文件属性很可能在幕后使用命名分叉
在任何情况下,请不要提交有关命名文件属性的答案。我专门寻找有关任意命名分叉的信息
有一些关于命名福克斯的描述在花了好几个小时之后,我相信我可以安全地得出这个结论:
- HFS+不支持任意命名的文件分叉
- 然而,macapi从未包含公共api来与数据分叉和资源分叉之外的任何其他分叉一起工作
但特别是与fork相关的大多数api成对存在,其中一个用于数据fork,另一个用于资源fork。当API使用或返回有关fork的数据时,它是使用一个数字字段来完成的,该字段只能有两个合法值,不能有代表fork名称的任意字符串。旧的文件管理器能够做到这一点。不幸的是,这些文档甚至都不在苹果的目录中 因此,您必须查看标题,这些标题都有很好的文档记录。请参阅
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h
。在这里,您将发现,例如,FSOpenFork()
,它采用任意的fork名称。不过,请注意,记录它的注释说,“所有卷都应该支持数据和资源分叉。其他命名分叉可能会得到一些卷的支持。”
一旦您从
FSOpenFork()
中获得了fork参考号,您就可以使用FSReadFork()
从中读取,等等。我以前的答案是错误的!三年后,互联网上出现了更多信息,包括旧的和不推荐的苹果开发者文档的镜像
以下是我找到的命名fork的API选择:
打开文件
打开文件或目录的任何fork进行流式访问FSOpenFork
打开文件或目录的任何分支进行流式访问PBOpenForkSync
打开文件或目录的任何分支进行流式访问pbopenforksync
为文件或目录创建命名forkFSCreateFork
为文件或目录创建命名的forkPBCreateForkSync
为文件或目录创建命名的forkpbcreateforksync
从文件或目录中删除命名的forkFSDeleteFork
从文件或目录中删除命名的forkPBDeleteForkSync
删除文件或目录的命名forkPBDeleteForkAsync
确定属于文件或目录的每个命名分支的名称和大小FSIterateForks
确定属于文件或目录的每个命名分支的名称和大小pbiterateforksync
确定属于文件或目录的每个命名分支的名称和大小PBIterateForksAsync
返回打开的叉的大小FSGetForkSize
返回打开的fork的大小PBGetForkSizeSync
返回打开的fork的大小PBGetForkSizeAsync
更改打开的叉的大小FSSetForkSize
更改打开的分叉的大小PBSetForkSizeSync
更改打开的叉的大小PBSetForkSizeAsync
哇,非常感谢!我只能找到一些评论说“将来可能支持其他fork”或类似的词。据我所知,资源fork也作为扩展属性公开。但据我所知,这是唯一一个以这种方式公开的命名fork。顺便说一句:你有没有找到一种方法来列举所有现有命名分支的名称?显然,用暴力猜名字是不现实的。@0xC000002L:不,除了这一页上的内容之外,我从来没有找到任何东西):@0xC000002L:一年半后,我又在看这些东西,瞧,现在互联网上还有更多!