4

对于一个小型项目,我希望能够存储有关文件的其他信息,并即使在移动文件时也将这些信息与文件一起保存。

附加信息将存储在 XML 文件中。为了将文件及其描述放在一起,我考虑过使用 ZIP 存档而不进行任何压缩,但我希望这些 ZIP 存档的行为与原始文件一样(即,如果原始文件是视频文件,双击存档上应在媒体播放器中打开文件)。这需要我编写一个处理这种“新”文件格式的小程序。

但是,我还没有找到一种解决方案,可以让我在不先从存档中提取文件(即使没有压缩)的情况下打开文件,这确实需要一些时间,而且不是我想要的。

我的问题是:是否有一个库(用于 C# 或 C/C++)允许我打开 zip 文件并直接播放/打开其中的文件而不提取存档?或者有没有更简单的方法来实现我所需要的(也许我的想法是错误的)?

4

1 回答 1

4

Windows 已经允许您通过Windows 属性系统存储有关外壳项目(包括文件)的其他元数据。

Windows API 代码包包含有关如何使用许多本机操作系统功能(包括属性系统)的示例和文档。

以下摘录来自 PropertyEdit 示例。

按名称获取文件的属性:

var myObject= ShellObject.FromParsingName(fileName);
IShellProperty prop = myObject.Properties.GetProperty(propertyName);

设置字符串属性:

if (prop.ValueType == typeof(string))
{
    (prop as ShellProperty<string>).Value = value;
}

如果您不想使用属性系统,您可以使用 NTFS 备用数据流来存储有关文件的附加信息。.NET 中没有对 ADS 的直接支持,但简单的搜索会返回多个包装器、库和关于它们的 SO 问题,例如NTFS - Alternate Data Streams

于 2013-11-12T13:37:57.993 回答