这解释了如何在 .net 中获取扩展文件属性。但它指向了一篇已有 10 年历史的 Code Project 文章。
线程本身已有 5 年历史。
现在有没有更好的方法来获取标题、子标题、剧集名称等扩展文件属性?
我真正想做的是获取单个文件的扩展文件信息。在我看来,这段代码循环遍历一个目录并获取这些文件的文件信息。
我已经使用了Windows API 代码包
ShellObject picture = ShellObject.FromParsingName(file);
var camera = picture.Properties.GetProperty(SystemProperties.System.Photo.CameraModel);
newItem.CameraModel = GetValue(camera, String.Empty, String.Empty);
var company = picture.Properties.GetProperty(SystemProperties.System.Photo.CameraManufacturer);
newItem.CameraMaker = GetValue(company, String.Empty, String.Empty);
链接到Rob Sanders的博客文章- [链接已删除。它指向恶意软件。]
为了让这段代码运行,你需要添加两个 nugget 包——我必须从包管理器控制台添加旧版本,因为最新版本不会安装在我的 antediluvian VS 2012 上:
Install-Package WindowsAPICodePack-Core -Version 1.1.2
Install-Package WindowsAPICodePack-Shell -Version 1.1.1
下面是列出所有属性的一些代码:
using Microsoft.WindowsAPICodePack.Shell;
private void ListExtendedProperties(string filePath)
{
var file = ShellObject.FromParsingName(filePath);
var i = 0;
foreach (var property in file.Properties.DefaultPropertyCollection)
{
var name = (property.CanonicalName ?? "unnamed-[" + i + "]").Replace("System.", string.Empty);
var t = Nullable.GetUnderlyingType(property.ValueType) ?? property.ValueType;
var value = (null == property.ValueAsObject)
? string.Empty
: (Convert.ChangeType(property.ValueAsObject, t)).ToString();
var friendlyName = property.Description.DisplayName;
Console.WriteLine(i++ + " " + name + "/" + friendlyName + ": " + value);
}
}
您可以使用我的MetadataExtractor库从图像和视频文件中访问各种元数据。它支持 Exif、IPTC 和许多其他类型的元数据。