4

我一直在想办法给文件自定义元数据。这方面的一个例子是给文件标签,但这不是我想要应用的唯一类型的自定义元数据。我看过一些像这样的帖子 -将自定义元数据添加到 jpeg 文件我可以将自定义元数据添加到文件吗?,将自定义元数据设置为任何类型的文件- 但它们都处理除 Objective-C 之外的语言,这是我试图用于自定义元数据的语言。我查看了 Apple 的文档,例如File Metadata Attributes ReferenceNSMetadataItem Class Reference,但我没有找到任何与自定义元数据相关的内容。

我的问题基本上是,是否可以将自定义元数据应用于文件,如果可以,我将如何去做?

4

3 回答 3

2

自定义元数据可以由自定义 MDImporter 创建。这是 Spotlight 的插件,允许操作系统查看/扫描/搜索自定义文档。因此,您的元数据最终会出现在聚光灯搜索索引中。但是,您的聚光灯导入器插件必须以某种方式从文件本身中提取元数据。

您还可以将元数据存储在文件的资源分支中,这是 MacOS 9 和更旧的处理关联数据的方式。这仅适用于 HFS+ 格式的卷,并且会在 NFS 等其他文件系统下创建两个文件。同样简单的 unix 工具,例如 cat FILE1 > FILE2 只会复制数据部分并可能破坏目的。我不会推荐这个。

或者您可以对文件使用所谓的扩展属性,例如,查找器会记住您从哪里下载特定文件的方式,因此它可以询问您是否真的想在第一次启动时执行下载。(参见 getxattr(2)、listxattr(2)、removexattr(2) 和 setxattr(2) 或

从命令行:“xattr”或“ls -l@” 从 C:getxattr()、listxattr()、removexattr() 和 setxattr()

于 2012-09-20T11:57:48.313 回答
1

我想为 iOS 做同样的事情。

xattr 库看起来正是适合这项工作的工具。谢谢你的提示。虽然它是基于 c 的,但我将使用它来创建一个支持自定义元数据的 objc iOS 文件对象类。xattr 在后台使用 void*,因此我的自定义元数据字典可以支持非常灵活的 NSString 键和 NSCoding 值。

这应该是一个很好的实用程序。在我的脑海中,存储 MIME 类型、校验和或已保存文件的相关下载 URL 可能很有用。更一般地说,我可以使用文件对象类来实现文件元数据以外的实用程序 - 例如,在创建文件的同时自动在其路径中创建任何必要的文件夹。

于 2014-07-10T15:28:06.150 回答
0

这篇文章包括用于读取和写入扩展文件属性的 Swift 代码:

编写扩展文件属性快速示例

于 2019-05-14T23:31:21.390 回答