Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 使用HFS+;叫福克斯?_Macos_Api_Hfs+_Alternate Data Stream_File Forks - Fatal编程技术网

Macos 使用HFS+;叫福克斯?

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

我知道Mac OS X中不推荐使用资源分叉

目前还不清楚不太知名和很少使用的命名fork是否也被弃用。HFS+实际上支持任意数量的任意长度的文件叉。(Mac命名的forks在概念上类似于Windows的备用数据流或“ADS”。)

无论是否已弃用,仍有理由了解如何创建、枚举、删除和以其他方式操作文件分叉

然而,我似乎找不到任何关于使用forks的api的信息

我所能找到的是,从终端和其他接受文件名或路径的地方,您可以使用语法
/…namedfork/rsrc
访问资源分支,直到最近还可以使用
/rsrc
。我尝试用其他名称替换
rsrc
,但我在终端中尝试的所有命令都失败了

在哪里可以找到旧的或非官方的API文档,以编程方式使用OSX中的命名forks

顺便说一句,谷歌搜索这个话题时,互联网上似乎有一个常见的误解。随机投机者说命名的fork是基于命名的文件属性构建的。事实并非如此。命名文件属性是一个全新的OSX特性。命名分叉早于OSX。事实上,命名文件属性很可能在幕后使用命名分叉

在任何情况下,请不要提交有关命名文件属性的答案。我专门寻找有关任意命名分叉的信息



有一些关于命名福克斯的描述

在花了好几个小时之后,我相信我可以安全地得出这个结论:

  • HFS+不支持任意命名的文件分叉
  • 然而,macapi从未包含公共api来与数据分叉和资源分叉之外的任何其他分叉一起工作
对不起,我没有具体的链接来支持我的发现。我基本上是通过查看apple.com上的许多页面和许多其他不同的页面来构建一幅图片


但特别是与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选择:

打开文件
  • FSOpenFork
    打开文件或目录的任何fork进行流式访问
  • PBOpenForkSync
    打开文件或目录的任何分支进行流式访问
  • pbopenforksync
    打开文件或目录的任何分支进行流式访问
创建和删除命名叉
  • FSCreateFork
    为文件或目录创建命名fork
  • PBCreateForkSync
    为文件或目录创建命名的fork
  • pbcreateforksync
    为文件或目录创建命名的fork
  • FSDeleteFork
    从文件或目录中删除命名的fork
  • PBDeleteForkSync
    从文件或目录中删除命名的fork
  • PBDeleteForkAsync
    删除文件或目录的命名fork
在命名的fork上迭代
  • FSIterateForks
    确定属于文件或目录的每个命名分支的名称和大小
  • pbiterateforksync
    确定属于文件或目录的每个命名分支的名称和大小
  • PBIterateForksAsync
    确定属于文件或目录的每个命名分支的名称和大小
操纵文件和Fork大小
  • FSGetForkSize
    返回打开的叉的大小
  • PBGetForkSizeSync
    返回打开的fork的大小
  • PBGetForkSizeAsync
    返回打开的fork的大小
  • FSSetForkSize
    更改打开的叉的大小
  • PBSetForkSizeSync
    更改打开的分叉的大小
  • PBSetForkSizeAsync
    更改打开的叉的大小

哇,非常感谢!我只能找到一些评论说“将来可能支持其他fork”或类似的词。据我所知,资源fork也作为扩展属性公开。但据我所知,这是唯一一个以这种方式公开的命名fork。顺便说一句:你有没有找到一种方法来列举所有现有命名分支的名称?显然,用暴力猜名字是不现实的。@0xC000002L:不,除了这一页上的内容之外,我从来没有找到任何东西):@0xC000002L:一年半后,我又在看这些东西,瞧,现在互联网上还有更多!