Directory.GetFiles


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)          

返回指定目錄中與指定的搜索模式匹配的文件的名稱(包含其路徑)。

命名空間:                     System.IO 程序集:          mscorlib(位於 mscorlib.dll)
語法
 
public static string[] GetFiles( string path, string searchPattern ) 

參數

path
    Type:     System.String

要搜索的目錄的相對或絕對路徑。 此字符串不區分大小寫。

searchPattern
    Type:     System.String

要與 path 中的文件名匹配的搜索字符串。  此參數可以包含有效的文本路徑和通配符(* 和 ?) 字符(請參閱備注),但不支持正則表達式。

返回值

Type:     System.String[]

指定目錄中與指定的搜索模式匹配的文件的完整名稱(包含路徑)的數組;如果未找到任何文件,則為空數組。

異常
 

Exception                       Condition          
IOException

path 是文件名。

- 或 -

發生了網絡錯誤。

UnauthorizedAccessException

調用方沒有所要求的權限。

ArgumentException

path 為長度為零的字符串,僅包含空格,或包含一個或多個無效字符。 可以通過使用 GetInvalidPathChars 查詢無效的字符。

- 或 -

searchPattern 不包含有效的模式。

ArgumentNullException

pathsearchPatternnull

PathTooLongException

指定的路徑和/或文件名超過了系統定義的最大長度。 例如,在基於 Windows 的平台上,路徑必須少於 248 個字符,且文件名必須少於 260 個字符。

DirectoryNotFoundException

指定的路徑未找到或無效(例如,它在未映射的驅動器上)。

備注
 

返回的文件名追加到提供 path 參數和返回的文件名的順序不能保證; 使用 Sort 方法是否需要特定的排序順序。

searchPattern 可以是文本和通配符的組合字符,但不支持正則表達式。 在允許使用下列通配符說明符 searchPattern

通配符說明符

匹配

*(星號)

在該位置的零個或多個字符。

? (問號)

在該位置的零個或一個字符。

該通配符以外的字符是原義字符。 例如, searchPattern 字符串"* t"中的所有名稱搜索 path 以字母"t"結尾。   searchPattern 字符串"s *"中的所有名稱搜索 path 以字母"s"開頭。

searchPattern 不能以兩個句點結尾 ("...") 或包含兩個句點 ("...")DirectorySeparatorCharAltDirectorySeparatorChar, ,也不可以包含任何無效字符。 你可以使用 GetInvalidPathChars 方法查詢無效字符。

System_CAPS_note說明

當使用中的星號通配符字符 searchPattern 例如"*.txt"中指定的擴展的字符數將影響的搜索,如下所示︰

  • 如果指定的擴展名為 3 個字符,該方法將返回具有指定擴展名開頭的擴展名的文件。 例如,"*.xls"返回"book.xls"和"book.xlsx"。

  • 在所有其他情況下,該方法返回與指定的擴展名完全匹配的文件。 例如,"*.ai"返回"file.ai",而不是"file.aif"。

當使用問號通配符字符時,此方法將返回與指定的文件擴展名匹配的文件。 例如,在目錄中,搜索模式的給定兩個文件、"file1.txt"和"file1.txtother","文件?。txt"返回只是第一個文件,而"file*.txt"的搜索模式返回這兩個文件。

System_CAPS_note說明

此方法檢查針對 8.3 文件名格式和長文件名的格式文件的名稱,因為的搜索模式類似於"* 1*.txt"可能會返回意外的文件的名稱。 例如,使用的搜索模式"* 1*.txt"返回"longfilename.txt",因為等效 8.3 文件名格式是"LONGFI~1.TXT"。

EnumerateFilesGetFiles 方法的行為有所不同,如下所示︰ 當您使用 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()); } } 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM