对于一个小项目,我希望能够存储有关文件的其他信息,并将该信息保存在文件中,即使它被移动。
附加信息将存储在XML文件中。为了将文件及其描述保持在一起,我考虑使用ZIP压缩文件而不进行任何压缩,但我希望这些ZIP存档的行为与原始文件一样(即如果原始文件是视频文件,则双击在存档上应该打开媒体播放器中的文件)。这需要我编写一个处理这种“新”文件格式的小程序。
但是,我还没有找到一个解决方案,允许我在没有首先从存档中提取文件的情况下打开文件(即使没有压缩),这需要一些时间而不是我想要的。
我的问题是:是否有一个库(用于C#或C / C ++)允许我打开一个zip文件并直接播放/打开其中的文件而无需提取存档?或者是否有更简单的方法来实现我需要的东西(也许我在想错误的方向)?
答案 0 :(得分:4)
Windows已允许您通过Windows Property System存储有关shell项目(包括文件)的其他元数据。
Windows API Code Pack包含有关如何使用许多本机操作系统功能的示例和文档,包括Property System。
以下摘录来自PropertyEdit样本。
按名称获取文件的属性:
var myObject= ShellObject.FromParsingName(fileName);
IShellProperty prop = myObject.Properties.GetProperty(propertyName);
设置字符串属性:
if (prop.ValueType == typeof(string))
{
(prop as ShellProperty<string>).Value = value;
}
如果您不想使用Property System,则可以使用NTFS备用数据流来存储有关文件的其他信息。在.NET中没有对ADS的直接支持,但是简单的搜索会返回多个包装器,库和有关它们的SO问题,例如NTFS - Alternate Data Streams