http://blog.csdn.net/limlimlim/article/details/8260911 轉載
https://msdn.microsoft.com/zh-cn/library/wz42302f.aspx
第一種方式
System.IO.Directory.GetFiles()獲取多個類型格式的文件 System.IO.Directory.GetFiles("c:\","(*.exe|*.txt)");
第二種方式
var files = Directory.GetFiles("C:\\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));
但這種寫法應該只有VS2008才支持,VS2005不支持
Directory.GetFiles 方法 (String, String)
返回指定目錄中與指定的搜索模式匹配的文件的名稱(包含其路徑)。
public static string[] GetFiles( string path, string searchPattern )
參數
- path
-
Type:
System.String
要搜索的目錄的相對或絕對路徑。 此字符串不區分大小寫。
- searchPattern
-
Type:
System.String
要與 path 中的文件名匹配的搜索字符串。 此參數可以包含有效的文本路徑和通配符(* 和 ?) 字符(請參閱備注),但不支持正則表達式。
Exception | Condition |
---|---|
IOException |
path 是文件名。 - 或 - 發生了網絡錯誤。 |
UnauthorizedAccessException |
調用方沒有所要求的權限。 |
ArgumentException |
path 為長度為零的字符串,僅包含空格,或包含一個或多個無效字符。 可以通過使用 GetInvalidPathChars 查詢無效的字符。 - 或 - searchPattern 不包含有效的模式。 |
ArgumentNullException |
path 或 searchPattern 為 null。 |
PathTooLongException |
指定的路徑和/或文件名超過了系統定義的最大長度。 例如,在基於 Windows 的平台上,路徑必須少於 248 個字符,且文件名必須少於 260 個字符。 |
DirectoryNotFoundException |
指定的路徑未找到或無效(例如,它在未映射的驅動器上)。 |
返回的文件名追加到提供 path 參數和返回的文件名的順序不能保證; 使用 Sort 方法是否需要特定的排序順序。
searchPattern 可以是文本和通配符的組合字符,但不支持正則表達式。 在允許使用下列通配符說明符 searchPattern。
通配符說明符 |
匹配 |
---|---|
*(星號) |
在該位置的零個或多個字符。 |
? (問號) |
在該位置的零個或一個字符。 |
該通配符以外的字符是原義字符。 例如, searchPattern 字符串"* t"中的所有名稱搜索 path 以字母"t"結尾。 searchPattern 字符串"s *"中的所有名稱搜索 path 以字母"s"開頭。
searchPattern 不能以兩個句點結尾 ("...") 或包含兩個句點 ("...") 跟 DirectorySeparatorChar 或 AltDirectorySeparatorChar, ,也不可以包含任何無效字符。 你可以使用 GetInvalidPathChars 方法查詢無效字符。
![]() |
---|
當使用中的星號通配符字符 searchPattern 例如"*.txt"中指定的擴展的字符數將影響的搜索,如下所示︰
當使用問號通配符字符時,此方法將返回與指定的文件擴展名匹配的文件。 例如,在目錄中,搜索模式的給定兩個文件、"file1.txt"和"file1.txtother","文件?。txt"返回只是第一個文件,而"file*.txt"的搜索模式返回這兩個文件。 |
![]() |
---|
此方法檢查針對 8.3 文件名格式和長文件名的格式文件的名稱,因為的搜索模式類似於"* 1*.txt"可能會返回意外的文件的名稱。 例如,使用的搜索模式"* 1*.txt"返回"longfilename.txt",因為等效 8.3 文件名格式是"LONGFI~1.TXT"。 |
EnumerateFiles 和 GetFiles 方法的行為有所不同,如下所示︰ 當您使用 EnumerateFiles, ,您可以開始之前,則返回整個集合枚舉名稱的集合; 當您使用 GetFiles, ,您必須等待的名稱,然后才能訪問該數組要返回的整個數組。 因此,當您使用多個文件和目錄、 EnumerateFiles 可能會更有效。
path 參數可以指定相對或絕對路徑信息。 相對路徑信息被解釋為相對於當前工作目錄。 若要獲取當前工作目錄,請參閱 GetCurrentDirectory。
path 參數不區分大小寫。
通用 I/O 任務的列表,請參閱 通用 I/O 任務。
下面的示例計算指定的字母開頭的文件數。
using System;
using System.IO; class Test { public static void Main() { try { // Only get files that begin with the letter "c." string[] dirs = Directory.GetFiles(@"c:\", "c*"); Console.WriteLine("The number of files starting with c is {0}.", dirs.Length); foreach (string dir in dirs) { Console.WriteLine(dir); } } catch (Exception e) { Console.WriteLine("The process failed: {0}", e.ToString()); } }