如果您在 Windows 资源管理器中右键单击文件并选择属性,则会弹出一个包含大量信息的对话框。如何使用 C# 访问这些信息?
具体来说,我正在寻找详细信息选项卡上的信息。我主要处理图像,所以“拍摄日期”很重要。我也会处理其他文件,所以如果有办法获取与文件关联的任何元数据,那就太好了。
我见过一些地方提到使用 Shell32.dll 来获取这些信息,但是当我尝试引用这个库时出现错误。有没有其他方法可以做到这一点,也许是通过 P/Invoke?
您是否尝试过 FileSystemInfo 类?
http://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.aspx
您可以File
为此目的使用类方法:
File.GetCreationTime(filename)
File.GetLastWriteTime(filename)
File.GetLastAccessTime(filename)
//and many more in the intellisense
在搞砸了一点之后,这里有一个非常有限的例子来说明如何获取图像元数据。
var image = System.Drawing.Image.FromFile(@"C:\your\image\here");
foreach (var a in image.PropertyItems)
{
dynamic value;
switch (a.Type)
{
case 2:
value = Encoding.ASCII.GetString(a.Value);
break;
case 3:
value = BitConverter.ToInt16(a.Value, 0);
break;
case 4:
value = BitConverter.ToInt32(a.Value, 0);
break;
default:
value = "NaN";
break;
}
Console.WriteLine("Type: {0} \r\n Value: {1}", a.Type, value);
}
您可以在Microsoft 的网站上找到更多信息并搜索图像元数据规范以完全自己编写一个。
始终可以选择使用已经处理此问题的第三方库,但我自己在图像领域没有做太多工作。