2012-07-05 157 views

回答

1

不容易。 DirectoryInfo违背文件系统,它本身不包含MIME类型信息。

您可以通过扩展名GetFiles()和扩展名获得所有文件。您也可以点击HKEY_CLASSES_ROOT\MIME\Database\Content Type注册表项将MIME类型列表转换为扩展名列表。

0

我不知道,但你的意思Directory.GetFiles?如果是这样,你可以搜索特定的文件格式,如:

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

扩展名将是一个明确的放弃的MIME类型。

+0

扩展名*可能*是MIME类型的线索。但是,没有保证扩展程序正在讲述关于文件内容的真相。 – 2012-07-05 19:29:44

+0

够公平的。哈哈。由于他正在检查他的计算机/服务器上的目录,因此我认为扩展很可能会说出真相。不过,这是你到达的非常有效的一点。 – Eric 2012-07-05 19:48:06

+1

只是想知道他的问题在哪里,它说的只是在他的电脑上。 :) – 2012-07-05 19:52:45

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

你可以看到其他的替代品here性能的比较。