在Explorer中,选择“详细”视图,可以看到很多文件属性,如图片的分辨率,MP3的艺术家、比特率,视频文件的分辨率等等等等;这些数据,有时候在C#中可能很难获取,比如图片的分辨率,需要用Image.FromFile得到Image类,然后才能得到分辨率数据,但是把图片加载到内存中,一是会加大内存开销,二是会更耗时。所以,今天我们就来说说怎么在C#中获取到文件的详细属性。
添加引用
在你的项目中添加对C:\Windows\System32\shell32.dll的引用,我们在前面一期《C#中使用SHFileOperation调用Windows的复制文件对话框》中也用到了这个动态链接库,不过当时是使用映射的方式,如今我们将其引用,直接使用。
using Shell32;
代码实现
/// <summary> /// 获取文件属性字典 /// </summary> /// <param name="filePath">文件路径</param> /// <returns>属性字典</returns> public static Dictionary<string, string> GetProperties(string filePath) { if (!File.Exists(filePath)) { throw new FileNotFoundException("指定的文件不存在。", filePath); } //初始化Shell接口 Shell32.Shell shell = new Shell32.ShellClass(); //获取文件所在父目录对象 Folder folder = shell.NameSpace(Path.GetDirectoryName(filePath)); //获取文件对应的FolderItem对象 FolderItem item = folder.ParseName(Path.GetFileName(filePath)); //字典存放属性名和属性值的键值关系对 Dictionary<string, string> Properties = new Dictionary<string, string>(); int i = 0; while (true) { //获取属性名称 string key = folder.GetDetailsOf(null, i); if (

本文介绍了如何在C#中获取文件的详细属性,包括添加对shell32.dll的引用,通过属性名或下标获取属性值。讨论了不同Windows版本中属性下标的不一致性和跨语言兼容性问题,并提出了解决方案。
最低0.47元/天 解锁文章
381

被折叠的 条评论
为什么被折叠?



