4

我正在寻找一种将元数据添加到文件的好方法。dsofile.dll适用于 NTFS。元数据丢失,当一个副本放在 FAT32 共享上时(我猜它使用 NTFS 隐藏流)。Microsoft Word 文档包含不会丢失的元数据,它们是如何做到的?类似于 FAT,通过电子邮件发送文件,其中包含使用 dsofile 创建的所有元数据(以及使用 Windows 资源管理器手动创建的元数据)。单独的元数据文件不是一种选择。它必须与标准 Windows 技术兼容。如果我通过 Outlook 向某人发送文件,然后他将其发回,则元数据不应丢失。

(需要的元数据其实只是一个ID)

4

3 回答 3

2

问题是所有文件系统都提供文件的单一流视图作为最大公分母。通过这个公开文件“内容”的接口,您可以读取或存储属性,并让天真的系统(或用户)实用程序与“内容”一起传输它们。例如,Windows 中的 CopyFile 会小心丢失备用数据流,并且没有“影子文件”的概念。

问题是“内容”的格式是否允许任意添加属性。

某些格式允许任意内容(例如,MSFT 的 docfile aka .doc/.xls/etc)。有些允许有限的内容(.mp3、.jpg、.exe)。

有些完全是 SOL(.txt、.bmp)。

于 2010-09-17T21:56:32.387 回答
1

任何解决方案都取决于格式。MS OFFice 文件是(所有)复合文件,并且那里有属性的位置。在某些格式(例如 PE 文件)中,如果您知道以后如何读取它们,只需将数据附加到文件末尾是安全的。在 ZIP 文件中,您可能可以在目录中找到一个位置,或者只需将包含您的数据的帮助文件添加到存档中。其他格式无法忍受这一点,您需要找到自己的方法来解决问题。

实际上,文件名也可以作为您的 ID 的一个很好的占位符。

如果您需要将文件存储在某处,但不需要外部应用程序可以读取文件,您可以将它们打包到 ZIP 存档或使用我们的SolFS 库之类的东西。

于 2010-09-26T14:24:34.343 回答
0

标准属性而不是自定义 DSOFile 属性呢?即评论、作者等?他们会被抹去吗?

不确定它是否理想但我们已经解决的一种方法是我们有一个工具可以获取 DSOfile 属性并保存一个文本文件,然后将其与文件一起通过电子邮件发送,而在另一端用户运行工具从文本中重新导入 dsofile 属性。

于 2010-08-20T01:57:59.333 回答