DirectoryInfo.GetFiles 方法

定義

從目前的目錄傳回檔案清單。

多載

GetFiles(String, EnumerationOptions)

傳回目前目錄中符合所指定搜尋模式和列舉選項的檔案清單。

GetFiles(String, SearchOption)

從目前目錄傳回符合指定搜尋模式的檔案清單,並使用值來判斷是否搜尋子目錄。

GetFiles()

從目前的目錄傳回檔案清單。

GetFiles(String)

從目前目錄傳回符合指定之搜尋模式的檔案清單。

GetFiles(String, EnumerationOptions)

來源:
DirectoryInfo.cs
來源:
DirectoryInfo.cs
來源:
DirectoryInfo.cs

傳回目前目錄中符合所指定搜尋模式和列舉選項的檔案清單。

public System.IO.FileInfo[] GetFiles (string searchPattern, System.IO.EnumerationOptions enumerationOptions);

參數

searchPattern
String

要比對檔案名稱的搜尋字串。 這個參數可以包含有效常值路徑與萬用 (* 和 ?) 字元的組合,但是不支援規則運算式。

enumerationOptions
EnumerationOptions

物件,描述要使用的搜尋和列舉組態。

傳回

符合 searchPatternenumerationOptions 的強型別 FileInfo 物件陣列。

例外狀況

.NET Framework 和 2.1 之前的 .NET Core 版本:searchPattern包含 方法所GetInvalidPathChars()定義的一或多個無效字元。

searchPatternnull

路徑無效 (例如,它位於未對應的磁碟機上)。

呼叫端沒有必要的權限。

備註

searchPattern 可以是常值和通配符的組合,但不支援正則表達式。 在中 searchPattern允許下列通配符規範。

通配符規範 相符項
* (星號) 該位置中的零或多個字元。
? (問號) 該位置中的零或一個字元。

通配符以外的字元是常值字元。 例如,字串 「*t」 會搜尋以字母 「t」 結尾的所有名稱。 字串 searchPattern “s*” 會搜尋以字母 “s” 開頭的所有名稱 path

EnumerateFilesGetFiles 方法不同,如下所示:

  • 當您使用 EnumerateFiles時,可以在傳回整個集合之前,開始列舉 物件的集合 FileInfo

  • 當您使用 GetFiles時,必須先等候傳回整個物件的陣列 FileInfo ,才能存取陣列。

因此,當您使用許多檔案和目錄時, EnumerateFiles 可能會更有效率。

如果 中 DirectoryInfo沒有任何檔案,這個方法會傳回空陣列。

參數中 searchPattern 允許下列通配符規範。

萬用字元 描述
* 零或多個字元。
? 完全為零或一個字元。

不保證傳回檔名的順序;如果需要特定排序順序,請使用 Sort 方法。

允許使用萬用字元。 例如, searchPattern 字串 「*.txt」 會搜尋擴展名為 「txt」 的所有檔名。 字串 searchPattern “s*” 會搜尋以字母 “s” 開頭的所有檔名。 如果沒有檔案,或沒有符合 searchPattern 中字串的 DirectoryInfo檔案,這個方法會傳回空陣列。

注意

例如,在 (中使用 searchPattern 星號通配符時,“*.txt”) ,比對行為會根據指定的擴展名長度而有所不同。 擴展名剛好三個字元的 會 searchPattern 傳回擴展名為三個或多個字元的檔案,其中前三個字元符合 中指定的 searchPattern擴展名。 searchPattern擴展名為 1、2 或超過三個字元的 只會傳回擴展名完全符合 中所searchPattern指定擴展名的檔案。 使用問號通配符時,這個方法只會傳回符合指定擴展名的檔案。 例如,在目錄中指定兩個檔案“file1.txt” 和 “file1.txtother”,“file?.txt” 的搜尋模式只會傳回第一個檔案,而 “file*.txt” 的搜尋模式則會傳回這兩個檔案。

注意

因為此方法會檢查檔名格式為 8.3 和長檔名格式的檔名,所以類似 “*1*.txt” 的搜尋模式可能會傳回非預期的檔名。 例如,使用 “*1*.txt” 的搜尋模式會傳回 “longfilename.txt”,因為對等的 8.3 檔名格式會是 “longf~1.txt”。

這個方法會預先填入下列 FileInfo 屬性的值:

適用於

GetFiles(String, SearchOption)

來源:
DirectoryInfo.cs
來源:
DirectoryInfo.cs
來源:
DirectoryInfo.cs

從目前目錄傳回符合指定搜尋模式的檔案清單,並使用值來判斷是否搜尋子目錄。

public System.IO.FileInfo[] GetFiles (string searchPattern, System.IO.SearchOption searchOption);

參數

searchPattern
String

要比對檔案名稱的搜尋字串。 這個參數可以包含有效常值路徑與萬用 (* 和 ?) 字元的組合,但是不支援規則運算式。

searchOption
SearchOption

其中一個列舉值,指定搜尋作業應該只包含目前目錄還是包含所有子目錄。

傳回

類型為 FileInfo 的陣列。

例外狀況

.NET Framework 和 2.1 之前的 .NET Core 版本:searchPattern包含 方法所GetInvalidPathChars()定義的一或多個無效字元。

searchPatternnull

searchOption 不是有效的 SearchOption 值。

路徑無效 (例如,它位於未對應的磁碟機上)。

呼叫端沒有必要的權限。

範例

下列範例示範如何使用不同的搜尋選項,從目錄取得檔案清單。 此範例假設目錄具有名為 log1.txt、log2.txt、test1.txt、test2.txt、test3.txt,以及具有名為 SubFile.txt 檔案的子目錄。

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\Users\tomfitz\Documents\ExampleDir");
            Console.WriteLine("No search pattern returns:");
            foreach (var fi in di.GetFiles())
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern *2* returns:");
            foreach (var fi in di.GetFiles("*2*"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern test?.txt returns:");
            foreach (var fi in di.GetFiles("test?.txt"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.GetFiles("*", SearchOption.AllDirectories))
            {
                Console.WriteLine(fi.Name);
            }
        }
    }
}
/*
This code produces output similar to the following:

No search pattern returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt

Search pattern *2* returns:
log2.txt
test2.txt

Search pattern test?.txt returns:
test1.txt
test2.txt
test3.txt

Search pattern AllDirectories returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt
SubFile.txt
Press any key to continue . . .

*/

備註

EnumerateFilesGetFiles 方法不同,如下所示:

  • 當您使用 EnumerateFiles時,可以在傳回整個集合之前,開始列舉 物件的集合 FileInfo

  • 當您使用 GetFiles時,必須先等候傳回整個物件的陣列 FileInfo ,才能存取陣列。

因此,當您使用許多檔案和目錄時, EnumerateFiles 可能會更有效率。

如果 中 DirectoryInfo沒有任何檔案,這個方法會傳回空陣列。

在中 searchPattern允許下列通配符規範。

萬用字元 描述
* (星號) 零或多個字元。
? (問號) 完全為零或一個字元。

不保證傳回檔名的順序;如果需要特定排序順序,請使用 Sort 方法。

允許使用萬用字元。 例如, searchPattern 字串 「*.txt」 會搜尋擴展名為 「txt」 的所有檔名。 字串 searchPattern “s*” 會搜尋以字母 “s” 開頭的所有檔名。 如果沒有檔案,或沒有符合 searchPattern 中字串的 DirectoryInfo檔案,這個方法會傳回空陣列。

注意

例如,在 (中使用 searchPattern 星號通配符時,“*.txt”) ,比對行為會根據指定的擴展名長度而有所不同。 擴展名剛好三個字元的 會 searchPattern 傳回擴展名為三個或多個字元的檔案,其中前三個字元符合 中指定的 searchPattern擴展名。 searchPattern擴展名為 1、2 或超過三個字元的 只會傳回擴展名完全符合 中所searchPattern指定擴展名的檔案。 使用問號通配符時,這個方法只會傳回符合指定擴展名的檔案。 例如,在目錄中指定兩個檔案“file1.txt” 和 “file1.txtother”,“file?.txt” 的搜尋模式只會傳回第一個檔案,而 “file*.txt” 的搜尋模式則會傳回這兩個檔案。

下列清單顯示參數不同長度 searchPattern 的行為:

  • “*.abc” 會傳回擴展名為 .abc、.abcd、.abcde、.abcdef 等的檔案。

  • “*.abcd” 只會傳回擴展名為 .abcd 的檔案。

  • “*.abcde” 只會傳回擴展名為 .abcde 的檔案。

  • “*.abcdef” 只會傳回擴展名為 .abcdef 的檔案。

注意

因為此方法會檢查檔名格式為 8.3 和長檔名格式的檔名,所以類似 “*1*.txt” 的搜尋模式可能會傳回非預期的檔名。 例如,使用 “*1*.txt” 的搜尋模式會傳回 “longfilename.txt”,因為對等的 8.3 檔名格式會是 “longf~1.txt”。

這個方法會預先填入下列 FileInfo 屬性的值:

  1. Attributes

  2. CreationTime

  3. CreationTimeUtc

  4. LastAccessTime

  5. LastAccessTimeUtc

  6. LastWriteTime

  7. LastWriteTimeUtc

  8. Length

另請參閱

適用於

GetFiles()

來源:
DirectoryInfo.cs
來源:
DirectoryInfo.cs
來源:
DirectoryInfo.cs

從目前的目錄傳回檔案清單。

public System.IO.FileInfo[] GetFiles ();

傳回

類型為 FileInfo 的陣列。

例外狀況

路徑無效,例如位於未對應的磁碟機上。

範例

下列範例示範如何使用不同的搜尋選項,從目錄取得檔案清單。 此範例假設目錄具有名為 log1.txt、log2.txt、test1.txt、test2.txt、test3.txt,以及具有名為 SubFile.txt 檔案的子目錄。

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\Users\tomfitz\Documents\ExampleDir");
            Console.WriteLine("No search pattern returns:");
            foreach (var fi in di.GetFiles())
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern *2* returns:");
            foreach (var fi in di.GetFiles("*2*"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern test?.txt returns:");
            foreach (var fi in di.GetFiles("test?.txt"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.GetFiles("*", SearchOption.AllDirectories))
            {
                Console.WriteLine(fi.Name);
            }
        }
    }
}
/*
This code produces output similar to the following:

No search pattern returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt

Search pattern *2* returns:
log2.txt
test2.txt

Search pattern test?.txt returns:
test1.txt
test2.txt
test3.txt

Search pattern AllDirectories returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt
SubFile.txt
Press any key to continue . . .

*/

備註

EnumerateFilesGetFiles 方法不同,如下所示:

  • 當您使用 EnumerateFiles時,可以在傳回整個集合之前,開始列舉 物件的集合 FileInfo

  • 當您使用 GetFiles時,必須先等候傳回整個物件的陣列 FileInfo ,才能存取陣列。

因此,當您使用許多檔案和目錄時, EnumerateFiles 可能會更有效率。

如果 中 DirectoryInfo沒有任何檔案,這個方法會傳回空陣列。

不保證傳回檔名的順序;如果需要特定排序順序,請使用 Sort 方法。

這個方法會預先填入下列 FileInfo 屬性的值:

另請參閱

適用於

GetFiles(String)

來源:
DirectoryInfo.cs
來源:
DirectoryInfo.cs
來源:
DirectoryInfo.cs

從目前目錄傳回符合指定之搜尋模式的檔案清單。

public System.IO.FileInfo[] GetFiles (string searchPattern);

參數

searchPattern
String

要比對檔案名稱的搜尋字串。 這個參數可以包含有效常值路徑與萬用 (* 和 ?) 字元的組合,但是不支援規則運算式。

傳回

類型為 FileInfo 的陣列。

例外狀況

.NET Framework 和 2.1 之前的 .NET Core 版本:searchPattern包含 方法所GetInvalidPathChars()定義的一或多個無效字元。

searchPatternnull

路徑無效 (例如,它位於未對應的磁碟機上)。

呼叫端沒有必要的權限。

範例

下列範例示範如何使用不同的搜尋選項,從目錄取得檔案清單。 此範例假設目錄具有名為 log1.txt、log2.txt、test1.txt、test2.txt、test3.txt,以及具有名為 SubFile.txt 檔案的子目錄。

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\Users\tomfitz\Documents\ExampleDir");
            Console.WriteLine("No search pattern returns:");
            foreach (var fi in di.GetFiles())
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern *2* returns:");
            foreach (var fi in di.GetFiles("*2*"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern test?.txt returns:");
            foreach (var fi in di.GetFiles("test?.txt"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.GetFiles("*", SearchOption.AllDirectories))
            {
                Console.WriteLine(fi.Name);
            }
        }
    }
}
/*
This code produces output similar to the following:

No search pattern returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt

Search pattern *2* returns:
log2.txt
test2.txt

Search pattern test?.txt returns:
test1.txt
test2.txt
test3.txt

Search pattern AllDirectories returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt
SubFile.txt
Press any key to continue . . .

*/

備註

searchPattern 可以是常值和通配符的組合,但不支援正則表達式。 在中 searchPattern允許下列通配符規範。

通配符規範 相符項
* (星號) 該位置中的零或多個字元。
? (問號) 該位置中的零或一個字元。

通配符以外的字元是常值字元。 例如,字串 「*t」 會搜尋以字母 「t」 結尾的所有名稱。 字串 searchPattern “s*” 會搜尋以字母 “s” 開頭的所有名稱 path

EnumerateFilesGetFiles 方法不同,如下所示:

  • 當您使用 EnumerateFiles時,可以在傳回整個集合之前,開始列舉 物件的集合 FileInfo

  • 當您使用 GetFiles時,必須先等候傳回整個物件的陣列 FileInfo ,才能存取陣列。

因此,當您使用許多檔案和目錄時, EnumerateFiles 可能會更有效率。

如果 中 DirectoryInfo沒有任何檔案,這個方法會傳回空陣列。

參數中 searchPattern 允許下列通配符規範。

萬用字元 描述
* 零或多個字元。
? 完全為零或一個字元。

不保證傳回檔名的順序;如果需要特定排序順序,請使用 Sort 方法。

允許使用萬用字元。 例如, searchPattern 字串 「*.txt」 會搜尋擴展名為 「txt」 的所有檔名。 字串 searchPattern “s*” 會搜尋以字母 “s” 開頭的所有檔名。 如果沒有檔案,或沒有符合 searchPattern 中字串的 DirectoryInfo檔案,這個方法會傳回空陣列。

注意

例如,在 (中使用 searchPattern 星號通配符時,“*.txt”) ,比對行為會根據指定的擴展名長度而有所不同。 擴展名剛好三個字元的 會 searchPattern 傳回擴展名為三個或多個字元的檔案,其中前三個字元符合 中指定的 searchPattern擴展名。 searchPattern擴展名為 1、2 或超過三個字元的 只會傳回擴展名完全符合 中所searchPattern指定擴展名的檔案。 使用問號通配符時,這個方法只會傳回符合指定擴展名的檔案。 例如,在目錄中指定兩個檔案“file1.txt” 和 “file1.txtother”,“file?.txt” 的搜尋模式只會傳回第一個檔案,而 “file*.txt” 的搜尋模式則會傳回這兩個檔案。

注意

因為此方法會檢查檔名格式為 8.3 和長檔名格式的檔名,所以類似 “*1*.txt” 的搜尋模式可能會傳回非預期的檔名。 例如,使用 “*1*.txt” 的搜尋模式會傳回 “longfilename.txt”,因為對等的 8.3 檔名格式會是 “longf~1.txt”。

這個方法會預先填入下列 FileInfo 屬性的值:

另請參閱

適用於