有没有办法通过泛型MIME类型获取文件?c#DirectoryInfo.GetFiles通过泛型MIME类型
例子:对于所有的图像( “图像/ PNG,图像/ JPEG,...”):
DirectoryInfo.GetFiles("image")
有没有办法通过泛型MIME类型获取文件?c#DirectoryInfo.GetFiles通过泛型MIME类型
例子:对于所有的图像( “图像/ PNG,图像/ JPEG,...”):
DirectoryInfo.GetFiles("image")
不容易。 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方法允许将searchpattern与wild字符,如?和*
所以DirectoryInfo.GetFiles没有任何选择的MIME类型
拿到文件,但你可以使用URLMON它看看这个帖子,例如:Using .NET, how can you find the mime type of a file based on the file signature not the extension
出于兼容性考虑,你包括自己的文件类型在数组中最好,例如。
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));
}
你可以看到其他的替代品here性能的比较。
扩展名*可能*是MIME类型的线索。但是,没有保证扩展程序正在讲述关于文件内容的真相。 – 2012-07-05 19:29:44
够公平的。哈哈。由于他正在检查他的计算机/服务器上的目录,因此我认为扩展很可能会说出真相。不过,这是你到达的非常有效的一点。 – Eric 2012-07-05 19:48:06
只是想知道他的问题在哪里,它说的只是在他的电脑上。 :) – 2012-07-05 19:52:45