0

如果您在 Windows 资源管理器中右键单击文件并选择属性,则会弹出一个包含大量信息的对话框。如何使用 C# 访问这些信息?

具体来说,我正在寻找详细信息选项卡上的信息。我主要处理图像,所以“拍摄日期”很重要。我也会处理其他文件,所以如果有办法获取与文件关联的任何元数据,那就太好了。

我见过一些地方提到使用 Shell32.dll 来获取这些信息,但是当我尝试引用这个库时出现错误。有没有其他方法可以做到这一点,也许是通过 P/Invoke?

4

3 回答 3

1

您是否尝试过 FileSystemInfo 类?

http://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.aspx

于 2013-02-27T20:45:37.290 回答
1

您可以File为此目的使用类方法:

File.GetCreationTime(filename)
File.GetLastWriteTime(filename)
File.GetLastAccessTime(filename)
//and many more in the intellisense
于 2013-02-27T20:47:50.790 回答
1

在搞砸了一点之后,这里有一个非常有限的例子来说明如何获取图像元数据。

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 的网站上找到更多信息并搜索图像元数据规范以完全自己编写一个。

始终可以选择使用已经处理此问题的第三方库,但我自己在图像领域没有做太多工作。

于 2013-02-27T21:55:58.190 回答