1

我们正在创建一个应用程序,它将在 *nix 系统上生成一些带有散列文件名的文本文件,以避免文件名过长。

但是,最好用一些元数据标记文件,以便更好地了解它们的内容是什么。

因此我的问题。有没有人有在 Ruby 中使用自定义元数据创建文件的经验?

我做了一些搜索,似乎有一些(非常古老的)宝石可以读取元数据: https ://github.com/kig/metadata http://oai.rubyforge.org/

我还发现:系统文件、读写或创建自定义元数据或扩展属性,这似乎表明我需要的可能是系统级别的,但在那里下降感觉又脏又可怕。

任何人都知道可以实现这一目标的图书馆吗?如何为 Ruby 生成的文件创建自定义元数据?

4

1 回答 1

0

一个非常古老但有趣的问题,没有答案!

为了使文件包含元数据,它必须具有某种格式(隐式或显式)来描述元数据的存储位置和方式。

这可以通过格式来完成,例如具有说明“主要”数据存储在哪里以及“元数据”存储在哪里的标题,或者可能是隐式的,例如具有“主要”数据的长度,并存储元数据作为“主要”数据之外的任何内容。

这也可以由操作系统/文件系统通过将信息与文件一起存储来完成,例如权限信息、修改时间、用户以及更全面的文件信息,例如 iOS/Windows 中的“图标”。

(请注意,我在“main”和“metadata”周围使用“引号”,因为现实情况是它都是数据,需要以某种方式存储,以便工具可以检索它)

真正的文本文件不包含任何标题或任何此类文件格式,本质上只是一个连续的字符块(不管操作系统如何存储它)。这也意味着它通常可以由任何文本编辑器打开,它只会读取并显示它找到的所有字符。

所以从某种意义上说,答案是你不能,至少不能在真正可移植到多个操作系统的真正文本文件上。

关于如何解决这个问题的一些想法:

在文本文件的末尾使用二进制文件,希望/要求他们的文本编辑器将忽略非 ascii。

将其存储在文件的操作系统元数据中并使其特定于操作系统(例如将其存储在操作系统可能对文件具有的“注释”部分中。

将其存储在与文件“一起”的单独文件中(即,file.txt 和 file.meta),并希望它们将文件保存在一起。

将其存储在一个单独的文件中,并将文本和元文件压缩在一起,让您的工具能够识别 zip。

想出一种新的文件格式,它不仅是文本,而且有一个文本部分(尽管它不能再用文本编辑器编辑)。

将元数据以文本格式存储在文本文件的末尾,可能带有注释或一些指示符,以单独保留元数据。这类似于 vi/vim 文本编辑器用于将 vim 命令嵌入文件的技术,它只是将它们作为注释放在文件的开头或结尾。

我不确定还有很多其他方法可以完成您想要的,但也许其中一种会起作用。

于 2021-12-16T00:39:21.913 回答