c#DirectoryInfo.GetFiles(按通用mime类型)

c#DirectoryInfo.GetFiles(按通用mime类型),c#,C#,有没有办法通过通用mime类型获取文件 示例:对于所有图像(“图像/png,图像/jpeg,…”): 我不确定,但你是说Directory.GetFiles吗?如果是,您可以搜索特定的文件格式,如: Directory.GetFiles(filepath, ".png"); Directory.GetFiles(filepath, ".jpeg"); // etc... 扩展名将是MIME类型的一个明显的赠品。我不确定,但你是说Directory.GetFiles吗?如果是,您可以搜索特定的文

有没有办法通过通用mime类型获取文件

示例:对于所有图像(“图像/png,图像/jpeg,…”):


我不确定,但你是说Directory.GetFiles吗?如果是,您可以搜索特定的文件格式,如:

Directory.GetFiles(filepath, ".png");
Directory.GetFiles(filepath, ".jpeg");
// etc...

扩展名将是MIME类型的一个明显的赠品。

我不确定,但你是说Directory.GetFiles吗?如果是,您可以搜索特定的文件格式,如:

Directory.GetFiles(filepath, ".png");
Directory.GetFiles(filepath, ".jpeg");
// etc...

扩展将是MIME类型的一个明显的赠品。

不容易。DirectoryInfo与文件系统相反,文件系统本身不包含MIME类型信息


您可以使用GetFiles()和扩展名按扩展名获取所有文件。您还可以点击注册表项
HKEY\U CLASSES\U ROOT\MIME\Database\Content Type
将MIME类型列表转换为扩展列表。

不容易。DirectoryInfo与文件系统相反,文件系统本身不包含MIME类型信息


您可以使用GetFiles()和扩展名按扩展名获取所有文件。您还可以点击注册表项
HKEY\U CLASSES\U ROOT\MIME\Database\Content Type
将MIME类型列表转换为扩展列表。

DirectoryInfo.GetFiles方法允许将的searchpattern设置为通配符,例如?及*

因此DirectoryInfo.GetFiles没有任何按mime类型获取文件的选项


但是你可以使用UrlMon,比如看这篇文章:

DirectoryInfo.GetFiles方法允许将searchpattern与通配符放在一起,比如?及*

因此DirectoryInfo.GetFiles没有任何按mime类型获取文件的选项


但是你可以使用UrlMon,比如看这篇文章:

出于兼容性的原因,最好将文件类型包含在一个数组中,例如

string[] imagemime = new []{".jpg", ".gif", ".png", ".bmp", ".jpe", ".jpeg", ".wmf", ".emf", ".xbm", ".ico", ".eps", ".tif", ".tiff", ".g01", ".g02", ".g03", ".g04", ".g05", ".g06", ".g07", ".g08"};
然后你可以有这样一个方法:

private static IEnumerable<string> GetFiles(string sourceFolder, string[] exts, System.IO.SearchOption searchOption)
    {
        return System.IO.Directory.GetFiles(sourceFolder, "*.*", searchOption)
                .Where(s=>exts.Contains(System.IO.Path.GetExtension(s), StringComparer.OrdinalIgnoreCase));
    }
私有静态IEnumerable GetFiles(string sourceFolder、string[]exts、System.IO.SearchOption SearchOption)
{
返回System.IO.Directory.GetFiles(sourceFolder,“***”,searchOption)
.Where(s=>exts.Contains(System.IO.Path.GetExtension,StringComparer.OrdinalIgnoreCase));
}

您可以看到与其他备选方案的性能比较。

出于兼容性原因,最好将文件类型包含在数组中,例如

string[] imagemime = new []{".jpg", ".gif", ".png", ".bmp", ".jpe", ".jpeg", ".wmf", ".emf", ".xbm", ".ico", ".eps", ".tif", ".tiff", ".g01", ".g02", ".g03", ".g04", ".g05", ".g06", ".g07", ".g08"};
然后你可以有这样一个方法:

private static IEnumerable<string> GetFiles(string sourceFolder, string[] exts, System.IO.SearchOption searchOption)
    {
        return System.IO.Directory.GetFiles(sourceFolder, "*.*", searchOption)
                .Where(s=>exts.Contains(System.IO.Path.GetExtension(s), StringComparer.OrdinalIgnoreCase));
    }
私有静态IEnumerable GetFiles(string sourceFolder、string[]exts、System.IO.SearchOption SearchOption)
{
返回System.IO.Directory.GetFiles(sourceFolder,“***”,searchOption)
.Where(s=>exts.Contains(System.IO.Path.GetExtension,StringComparer.OrdinalIgnoreCase));
}

您可以看到性能与其他备选方案的比较。

这些扩展可能是MIME类型的线索。但是,不能保证扩展名说出了文件内容的真相。这是很公平的。哈哈。由于他正在检查计算机/服务器上的目录,我认为扩展很可能是在说实话。然而,这是一个非常有道理的观点。我只是想知道在他的问题中,它在哪里说它只是在他的计算机上很好。你让我笑了。+1扩展可能是MIME类型的线索。但是,不能保证扩展名说出了文件内容的真相。这是很公平的。哈哈。由于他正在检查计算机/服务器上的目录,我认为扩展很可能是在说实话。然而,这是一个非常有道理的观点。我只是想知道在他的问题中,它在哪里说它只是在他的计算机上很好。你让我笑了。+1