有没有办法通过通用 mime 类型获取文件?
示例:对于所有图像(“image/png, image/jpeg, ...”):
DirectoryInfo.GetFiles("image")
有没有办法通过通用 mime 类型获取文件?
示例:对于所有图像(“image/png, image/jpeg, ...”):
DirectoryInfo.GetFiles("image")
出于兼容性原因,您最好将自己的文件类型包含在一个数组中,例如。
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));
}
您可以在此处查看与其他替代方案的性能比较。
不容易。DirectoryInfo 与文件系统背道而驰,该文件系统本身并不包含 MIME 类型信息。
您可以使用 GetFiles() 和扩展名按扩展名获取所有文件。您还可以点击HKEY_CLASSES_ROOT\MIME\Database\Content Type
注册表项将 MIME 类型列表转换为扩展列表。
我不确定,但你是说 Directory.GetFiles 吗?如果是这样,您可以搜索特定的文件格式,例如:
Directory.GetFiles(filepath, ".png");
Directory.GetFiles(filepath, ".jpeg");
// etc...
扩展将明确放弃 MIME 类型。
DirectoryInfo.GetFiles 方法允许放置带有通配符的搜索模式,例如?和 *
所以 DirectoryInfo.GetFiles 没有任何选项来按 mime 类型获取文件
但是您可以使用 UrlMon 来查看这篇文章,例如:使用 .NET,如何根据文件签名而不是扩展名找到文件的 mime 类型