获取扩展文件属性

本文关键字:文件属性 扩展 获取 | 更新日期: 2023-09-27 18:34:41

我找到了这篇文章。

这说明了如何在 .net 中获取扩展文件属性。 但它指向了一篇已有 10 年历史的代码项目文章。

线程本身已有 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的博客文章 - [链接已删除。它指向恶意软件。

您可以使用我的元数据提取器库访问图像和视频文件中的各种元数据。它支持Exif,IPTC和许多其他类型的元数据。

它可以在GitHub和NuGet上找到。

为了使此代码运行,您需要添加两个 nugget 包 - 我不得不从包管理器控制台添加旧版本,因为最新版本不会安装在我的上古 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);
        }
    }