0

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

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

DirectoryInfo.GetFiles("image")
4

4 回答 4

2

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

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));
    }

您可以在此处查看与其他替代方案的性能比较。

于 2012-07-05T19:35:19.557 回答
1

不容易。DirectoryInfo 与文件系统背道而驰,该文件系统本身并不包含 MIME 类型信息。

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

于 2012-07-05T19:19:55.193 回答
0

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

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

扩展将明确放弃 MIME 类型。

于 2012-07-05T19:19:52.943 回答
0

DirectoryInfo.GetFiles 方法允许放置带有通配符的搜索模式,例如?和 *

所以 DirectoryInfo.GetFiles 没有任何选项来按 mime 类型获取文件

但是您可以使用 UrlMon 来查看这篇文章,例如:使用 .NET,如何根据文件签名而不是扩展名找到文件的 mime 类型

于 2012-07-05T19:23:26.020 回答