2012-07-05 159 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性能的比較。