Directory.EnumerateFiles 方法

定義

傳回符合指定準則之完整檔名的可列舉集合。

多載

EnumerateFiles(String, String, SearchOption)

傳回指定路徑中符合搜尋模式之完整檔名的可列舉集合,並選擇性地搜尋子目錄。

EnumerateFiles(String, String, EnumerationOptions)

傳回在所指定路徑中符合搜尋模式與列舉選項之完整檔案名稱的可列舉集合,並選擇性地搜尋子目錄。

EnumerateFiles(String)

傳回指定路徑中完整檔名的可列舉集合。

EnumerateFiles(String, String)

傳回指定路徑中符合搜尋模式之完整檔名的可列舉集合。

EnumerateFiles(String, String, SearchOption)

來源:
Directory.cs
來源:
Directory.cs
來源:
Directory.cs

傳回指定路徑中符合搜尋模式之完整檔名的可列舉集合,並選擇性地搜尋子目錄。

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::SearchOption searchOption);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.SearchOption searchOption);
static member EnumerateFiles : string * string * System.IO.SearchOption -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String, searchOption As SearchOption) As IEnumerable(Of String)

參數

path
String

要搜尋之目錄的相對或絕對路徑。 這個字串不會區分大小寫。

searchPattern
String

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

searchOption
SearchOption

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

傳回

path 指定的目錄中,且符合所指定搜尋模式與搜尋選項之檔案完整名稱 (包含路徑) 的可列舉集合。

例外狀況

.NET Framework和 2.1 之前的 .NET Core 版本: path 是長度為零的字串、只包含空白字元,或包含不正確字元。 您可以使用 GetInvalidPathChars() 方法查詢無效字元。

-或-

searchPattern 不包含有效模式。

pathnull

-或-

searchPatternnull

searchOption 不是有效的 SearchOption 值。

path 無效,例如參考到未對應的磁碟機。

path 為檔案名稱。

指定的路徑、檔案名稱,或兩者合計超出系統定義的長度上限。

呼叫端沒有必要的權限。

呼叫端沒有必要的權限。

範例

下列範例示範如何擷取目錄及其子目錄中的所有文字檔,並將其移至新的目錄。 移動檔案之後,這些檔案就不再存在於原始目錄中。

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories);

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"

try
    let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories)

    for currentFile in txtFiles do
        let fileName = currentFile.Substring(sourceDirectory.Length + 1)
        Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
    printfn $"{e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories)

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

    End Sub

End Module

下列範例會以遞迴方式列舉副檔名 .txt 為 的所有檔案,並讀取檔案的每一行,如果它包含字串 「Microsoft」,則會顯示該行。

using System;
using System.IO;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // Set a variable to the My Documents path.
            string docPath =
            Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

            var files = from file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
                        from line in File.ReadLines(file)
                        where line.Contains("Microsoft")
                        select new
                        {
                            File = file,
                            Line = line
                        };

            foreach (var f in files)
            {
                Console.WriteLine($"{f.File}\t{f.Line}");
            }
            Console.WriteLine($"{files.Count().ToString()} files found.");
        }
        catch (UnauthorizedAccessException uAEx)
        {
            Console.WriteLine(uAEx.Message);
        }
        catch (PathTooLongException pathEx)
        {
            Console.WriteLine(pathEx.Message);
        }
    }
}
open System
open System.IO

try
    // Set a variable to the My Documents path.
    let docPath =
        Environment.GetFolderPath Environment.SpecialFolder.MyDocuments

    let files =
        query {
            for file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories) do
            for line in File.ReadLines file do
            where (line.Contains "Microsoft")
            select {| File = file; Line = line |}
        }

    for f in files do
        printfn $"{f.File}\t{f.Line}"
    printfn $"{Seq.length files} files found."

with
| :? UnauthorizedAccessException as uAEx -> printfn $"{uAEx.Message}"
| :? PathTooLongException as pathEx -> printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Xml.Linq

Module Module1

    Sub Main()
        Try
            Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
            Dim files = From chkFile In Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
                        From line In File.ReadLines(chkFile)
                        Where line.Contains("Microsoft")
                        Select New With {.curFile = chkFile, .curLine = line}

            For Each f In files
                Console.WriteLine($"{f.File}\t{f.Line}")
            Next
            Console.WriteLine($"{files.Count} files found.")
        Catch uAEx As UnauthorizedAccessException
            Console.WriteLine(uAEx.Message)
        Catch pathEx As PathTooLongException
            Console.WriteLine(pathEx.Message)
        End Try
    End Sub
End Module

備註

searchPattern 可以是常值和萬用字元的組合,但不支援正則運算式。 在 中 searchPattern 允許下列萬用字元規範。

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

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

注意

僅.NET Framework:當您在 中使用 searchPattern 星號萬用字元,並指定三個字元副檔名時,例如 「*.txt」,此方法也會傳回副檔名開頭為指定副檔名的檔案。 例如,搜尋模式 「*.xls」 會同時傳回 「book.xls」 和 「book.xlsx」。 只有在搜尋模式中使用星號,而提供的副檔名只是三個字元時,才會發生此行為。 如果您使用搜尋模式中某處的問號萬用字元,這個方法只會傳回完全符合指定副檔名的檔案。 下表描述.NET Framework中的此異常狀況。

目錄中的檔案 搜尋模式 .NET 5+ 傳回 .NET Framework傳回
file.ai file.aif *。艾 file.ai file.ai
book.xls,book.xlsx *.xls book.xls book.xls,book.xlsx
ello.txt、hello.txt、hello.txtt ?ello.txt ello.txt,hello.txt ello.txt,hello.txt

searchPattern 不能以兩個句點結尾 (「。」) 或包含兩個句點 (「.」。) 後面接著 DirectorySeparatorCharAltDirectorySeparatorChar ,也無法包含任何不正確字元。 您可以使用 GetInvalidPathChars 方法查詢無效字元。

您可以使用 參數指定相對路徑資訊 path 。 相對路徑資訊會解譯為相對於目前的工作目錄,您可以使用 方法來判斷 GetCurrentDirectory

EnumerateFilesGetFiles 方法會如下所示:當您使用 EnumerateFiles 時,可以在傳回整個集合之前,開始列舉名稱集合。 當您使用 GetFiles 時,必須先等待傳回整個名稱陣列,才能存取陣列。 因此,當您使用許多檔案和目錄時, EnumerateFiles 可能會更有效率。

傳回的集合不會快取。 集合上的 每個呼叫 GetEnumerator 都會啟動新的列舉。

適用於

EnumerateFiles(String, String, EnumerationOptions)

來源:
Directory.cs
來源:
Directory.cs
來源:
Directory.cs

傳回在所指定路徑中符合搜尋模式與列舉選項之完整檔案名稱的可列舉集合,並選擇性地搜尋子目錄。

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
static member EnumerateFiles : string * string * System.IO.EnumerationOptions -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String, enumerationOptions As EnumerationOptions) As IEnumerable(Of String)

參數

path
String

要搜尋之目錄的相對或絕對路徑。 這個字串不會區分大小寫。

searchPattern
String

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

enumerationOptions
EnumerationOptions

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

傳回

path 指定的目錄中,且符合所指定搜尋模式與列舉選項之檔案完整名稱 (包含路徑) 的可列舉集合。

例外狀況

.NET Framework和 2.1 之前的 .NET Core 版本: path 是長度為零的字串、只包含空白字元,或包含不正確字元。 您可以使用 GetInvalidPathChars() 方法查詢無效字元。

-或-

searchPattern 不包含有效模式。

pathnull

-或-

searchPatternnull

searchOption 不是有效的 SearchOption 值。

path 無效,例如參考到未對應的磁碟機。

path 為檔案名稱。

指定的路徑、檔案名稱,或兩者合計超出系統定義的長度上限。

呼叫端沒有必要的權限。

備註

searchPattern 可以是常值和萬用字元的組合,但不支援正則運算式。 在 中 searchPattern 允許下列萬用字元規範。

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

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

注意

僅.NET Framework:當您在 searchPattern 中使用星號萬用字元,並指定三個字元副檔名時,例如 「*.txt」,此方法也會傳回副檔名開頭為指定副檔名的檔案。 例如,搜尋模式 「*.xls」 會同時傳回 「book.xls」 和 「book.xlsx」。 只有在搜尋模式中使用星號,且提供的副檔名剛好是三個字元時,才會發生此行為。 如果您在搜尋模式的某處使用問號萬用字元,此方法只會傳回完全符合指定副檔名的檔案。 下表描述.NET Framework中的這個異常狀況。

目錄中的檔案 搜尋模式 .NET 5+ 傳回 .NET Framework傳回
file.ai file.aif *。艾 file.ai file.ai
book.xls,book.xlsx *.xls book.xls book.xls,book.xlsx
ello.txt、hello.txt、hello.txtt ?ello.txt ello.txt,hello.txt ello.txt,hello.txt

searchPattern 不能以兩個句號結尾 (」。」) 或包含兩個 (句點」。」) 後面 DirectorySeparatorChar 接著 或 AltDirectorySeparatorChar ,也無法包含任何無效字元。 您可以使用 GetInvalidPathChars 方法查詢無效字元。

您可以使用 參數指定相對路徑資訊 path 。 相對路徑資訊會解譯為相對於目前工作目錄,您可以使用 方法來判斷 GetCurrentDirectory

EnumerateFilesGetFiles 方法不同,如下所示:當您使用 EnumerateFiles 時,您可以在傳回整個集合之前,開始列舉名稱的集合。 當您使用 GetFiles 時,必須先等候傳回整個名稱陣列,才能存取陣列。 因此,當您使用許多檔案和目錄時, EnumerateFiles 可能會更有效率。

不會快取傳回的集合。 集合上的 每個呼叫 GetEnumerator 都會啟動新的列舉。

適用於

EnumerateFiles(String)

來源:
Directory.cs
來源:
Directory.cs
來源:
Directory.cs

傳回指定路徑中完整檔名的可列舉集合。

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path);
static member EnumerateFiles : string -> seq<string>
Public Shared Function EnumerateFiles (path As String) As IEnumerable(Of String)

參數

path
String

要搜尋之目錄的相對或絕對路徑。 這個字串不會區分大小寫。

傳回

path 指定的目錄中,檔案完整名稱 (包括路徑) 的可列舉集合。

例外狀況

.NET Framework和 2.1 之前的 .NET Core 版本: path 是長度為零的字串、只包含空白字元,或包含無效字元。 您可以使用 GetInvalidPathChars() 方法查詢無效字元。

pathnull

path 無效,例如參考到未對應的磁碟機。

path 為檔案名稱。

指定的路徑、檔案名稱,或兩者合計超出系統定義的長度上限。

呼叫端沒有必要的權限。

呼叫端沒有必要的權限。

範例

下列範例示範如何擷取目錄中的所有檔案,並將其移至新的目錄。 移動檔案之後,檔案就不再存在於原始目錄中。

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory);

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"

try
    let txtFiles = Directory.EnumerateFiles sourceDirectory

    for currentFile in txtFiles do
        let fileName = currentFile.Substring(sourceDirectory.Length + 1)
        Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
    printfn $"{e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory)

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

    End Sub

End Module

下列範例會列舉指定目錄中的檔案、讀取檔案的每一行,如果它包含字串 「Europe」,則會顯示該行。

using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // LINQ query for all files containing the word 'Europe'.
            var files = from file in
                Directory.EnumerateFiles(@"\\archives1\library\")
                where file.ToLower().Contains("europe")
                select file;

            foreach (var file in files)
            {
                Console.WriteLine("{0}", file);
            }
            Console.WriteLine("{0} files found.", files.Count<string>().ToString());
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
open System
open System.IO

try
    // All files containing the word 'Europe'.
    let files =
        Directory.EnumerateFiles @"\\archives1\library\"
        |> Seq.filter (fun file -> file.ToLower().Contains "europe")

    for file in files do
        printfn $"{file}"
    printfn $"{Seq.length files} files found."

with 
| :? UnauthorizedAccessException as uaEx ->
    printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
    printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            ' LINQ query for all files containing the word 'Europe'.
            Dim files = From file In Directory.EnumerateFiles("\\archives1\library\")
                Where file.ToLower().Contains("europe")

            For Each file In files
                Console.WriteLine("{0}", file)
            Next
            Console.WriteLine("{0} files found.", files.Count.ToString())
        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub

End Module

備註

您可以使用 參數指定相對路徑資訊 path 。 相對路徑資訊會解譯為相對於目前工作目錄,您可以使用 方法來判斷 GetCurrentDirectory

EnumerateFilesGetFiles 方法不同,如下所示:當您使用 EnumerateFiles 時,您可以在傳回整個集合之前,開始列舉名稱的集合。 當您使用 GetFiles 時,必須先等候傳回整個名稱陣列,才能存取陣列。 因此,當您使用許多檔案和目錄時, EnumerateFiles 可能會更有效率。

未快取傳回的集合;集合上的 每個呼叫 GetEnumerator 都會啟動新的列舉。

適用於

EnumerateFiles(String, String)

來源:
Directory.cs
來源:
Directory.cs
來源:
Directory.cs

傳回指定路徑中符合搜尋模式之完整檔名的可列舉集合。

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern);
static member EnumerateFiles : string * string -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String) As IEnumerable(Of String)

參數

path
String

要搜尋之目錄的相對或絕對路徑。 這個字串不會區分大小寫。

searchPattern
String

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

傳回

path 指定的目錄中,符合指定搜尋模式的檔案之完整名稱 (包括路徑) 的可列舉集合。

例外狀況

.NET Framework和 2.1 之前的 .NET Core 版本: path 是長度為零的字串、只包含空白字元,或包含無效字元。 您可以使用 GetInvalidPathChars() 方法查詢無效字元。

-或-

searchPattern 不包含有效模式。

pathnull

-或-

searchPatternnull

path 無效,例如參考到未對應的磁碟機。

path 為檔案名稱。

指定的路徑、檔案名稱,或兩者合計超出系統定義的長度上限。

呼叫端沒有必要的權限。

呼叫端沒有必要的權限。

範例

下列範例示範如何擷取目錄中的所有文字檔,並將其移至新的目錄。 移動檔案之後,檔案就不再存在於原始目錄中。

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt");

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"

try
    let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")

    for currentFile in txtFiles do
        let fileName = currentFile.Substring(sourceDirectory.Length + 1)
        Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))

with e ->
    printfn $"{e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try
    End Sub

End Module

下列範例會列舉指定目錄中副檔名為 「.txt」 的檔案、讀取檔案的每一行,並在包含字串 「Europe」 時顯示該行。

using System;
using System.Linq;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // LINQ query for all .txt files containing the word 'Europe'.
            var files = from file in Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
                where file.ToLower().Contains("europe")
                select file;

            foreach (var file in files)
            {
                Console.WriteLine("{0}", file);
            }
            Console.WriteLine("{0} files found.", files.Count<string>().ToString());
        }
            
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
open System
open System.IO

try
    // All .txt files containing the word 'Europe'.
    let files = 
        Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
        |> Seq.filter(fun file -> file.ToLower().Contains "europe")

    for file in files do
        printfn $"{file}"
    printfn $"{Seq.length files} files found."

with
| :? UnauthorizedAccessException as uaEx ->
    printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
    printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            ' LINQ query for all .txt files containing the word 'Europe'.
            Dim files = From file In Directory.EnumerateFiles("\\archives1\library\", "*.txt")
                Where file.ToLower().Contains("europe")

            For Each file In files
                Console.WriteLine("{0}", file)
            Next
            Console.WriteLine("{0} files found.", files.Count.ToString())
        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub

End Module

備註

searchPattern 可以是常值和萬用字元的組合,但不支援正則運算式。 在 中 searchPattern 允許下列萬用字元規範。

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

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

注意

僅.NET Framework:當您在 searchPattern 中使用星號萬用字元,並指定三個字元副檔名時,例如 「*.txt」,此方法也會傳回副檔名開頭為指定副檔名的檔案。 例如,搜尋模式 「*.xls」 會同時傳回 「book.xls」 和 「book.xlsx」。 只有在搜尋模式中使用星號,且提供的副檔名剛好是三個字元時,才會發生此行為。 如果您在搜尋模式的某處使用問號萬用字元,此方法只會傳回完全符合指定副檔名的檔案。 下表描述.NET Framework中的這個異常狀況。

目錄中的檔案 搜尋模式 .NET 5+ 傳回 .NET Framework傳回
file.ai file.aif *。艾 file.ai file.ai
book.xls,book.xlsx *.xls book.xls book.xls,book.xlsx
ello.txt、hello.txt、hello.txtt ?ello.txt ello.txt,hello.txt ello.txt,hello.txt

searchPattern 不能以兩個句點結尾 (「。」) 或包含兩個句點 (「.」。) 後面接著 DirectorySeparatorCharAltDirectorySeparatorChar ,也無法包含任何不正確字元。 您可以使用 GetInvalidPathChars 方法查詢無效字元。

您可以使用 參數指定相對路徑資訊 path 。 相對路徑資訊會解譯為相對於目前的工作目錄,您可以使用 方法來判斷 GetCurrentDirectory

EnumerateFilesGetFiles 方法會如下所示:當您使用 EnumerateFiles 時,可以在傳回整個集合之前開始列舉名稱集合;當您使用 GetFiles 時,必須先等候傳回整個名稱陣列,才能存取陣列。 因此,當您使用許多檔案和目錄時, EnumerateFiles 可能會更有效率。

傳回的集合不會快取。 集合上的 每個呼叫 GetEnumerator 都會啟動新的列舉。

適用於