語言

Directory.EnumerateDirectories 方法

定義

回傳一組符合指定條件的目錄全名集合。

多載

名稱 Description
EnumerateDirectories(String)

回傳指定路徑中可枚舉的目錄全名集合。

EnumerateDirectories(String, String)

回傳一組可枚舉的目錄全名,與指定路徑中搜尋模式相符。

EnumerateDirectories(String, String, EnumerationOptions)

回傳一組可枚舉的目錄全名集合,符合指定路徑中搜尋模式,並可選擇性地搜尋子目錄。

EnumerateDirectories(String, String, SearchOption)

回傳一組可枚舉的目錄全名,符合指定路徑中搜尋模式,並可選擇性地搜尋子目錄。

EnumerateDirectories(String)

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

回傳指定路徑中可枚舉的目錄全名集合。

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

參數

path
String

指向目錄的相對或絕對路徑。 此字串不區分大小寫。

傳回

一個可枚舉的目錄全名集合(包括路徑), path由 。

例外狀況

.NET Framework 及 2.1 .NET Core 版本:path 為零長度字串,僅含空白,或包含無效字元。 你可以用這個 GetInvalidPathChars() 方法查詢無效字元。

path 是 null。

path 不成立,例如指未映射的硬碟。

path 是一個檔案名稱。

指定的路徑、檔案名稱或組合長度超過系統定義的最大長度。

來電者沒有所需的權限。

來電者沒有所需的權限。

範例

以下範例列舉指定路徑中的頂層目錄。

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

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

            List<string> dirs = new List<string>(Directory.EnumerateDirectories(docPath));

            foreach (var dir in dirs)
            {
                Console.WriteLine($"{dir.Substring(dir.LastIndexOf(Path.DirectorySeparatorChar) + 1)}");
            }
            Console.WriteLine($"{dirs.Count} directories found.");
        }
        catch (UnauthorizedAccessException ex)
        {
            Console.WriteLine(ex.Message);
        }
        catch (PathTooLongException ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}
open System
open System.IO

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

    let dirs = Directory.EnumerateDirectories docPath |> Seq.toList

    for dir in dirs do
        printfn $"{dir.Substring(dir.LastIndexOf Path.DirectorySeparatorChar + 1)}"
    printfn $"{dirs.Length} directories found."

with
| :? UnauthorizedAccessException as ex ->
    printfn $"{ex.Message}"
| :? PathTooLongException as ex ->
    printfn $"{ex.Message}"
Imports System.Collections.Generic
Imports System.IO

Module Module1

    Sub Main()
        Try
            Dim dirPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

            Dim dirs As List(Of String) = New List(Of String)(Directory.EnumerateDirectories(dirPath))

            For Each folder In dirs
                Console.WriteLine($"{dir.Substring(dir.LastIndexOf(Path.DirectorySeparatorChar) + 1)}")
            Next
            Console.WriteLine($"{dirs.Count} directories found.")
        Catch ex As UnauthorizedAccessException
            Console.WriteLine(ex.Message)
        Catch ex As PathTooLongException
            Console.WriteLine(ex.Message)
        End Try

    End Sub
End Module

備註

你可以在參數中 path 指定相對或絕對路徑資訊。 相對路徑資訊會被解讀為相對於目前工作目錄的資訊,你可以透過此 GetCurrentDirectory 方法來判斷。 回傳的目錄名稱會以你在參數中 path 提供的值作為前綴。 例如,如果你在參數中 path 提供相對路徑,回傳的目錄名稱也會包含相對路徑。

EnumerateDirectories和 GetDirectories 方法的不同如下:當你使用 EnumerateDirectories時,可以在整個集合回傳前就開始枚舉名稱集合;當你使用 GetDirectories時,必須等待整個名稱陣列回傳完畢才能存取陣列。 因此,當你處理多個檔案和目錄時, EnumerateDirectories 效率會更高。

回傳的集合不會被快取;每次呼叫集合 GetEnumerator 都會開始新的列舉。

適用於

EnumerateDirectories(String, String)

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

回傳一組可枚舉的目錄全名,與指定路徑中搜尋模式相符。

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateDirectories(System::String ^ path, System::String ^ searchPattern);
public static System.Collections.Generic.IEnumerable<string> EnumerateDirectories(string path, string searchPattern);
static member EnumerateDirectories : string * string -> seq<string>
Public Shared Function EnumerateDirectories (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 不包含有效的模式。

path 是 null。

-或-

searchPattern 是 null。

path 不成立,例如指未映射的硬碟。

path 是一個檔案名稱。

指定的路徑、檔案名稱或組合長度超過系統定義的最大長度。

來電者沒有所需的權限。

來電者沒有所需的權限。

範例

以下範例列舉了指定路徑中符合特定搜尋模式的頂層目錄。

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

class Program
{

    private static void Main(string[] args)
    {
        try
        {
            string dirPath = @"\\archives\2009\reports";

            // LINQ query.
            var dirs = from dir in
                     Directory.EnumerateDirectories(dirPath, "dv_*")
                       select dir;

            // Show results.
            foreach (var dir in dirs)
            {
                // Remove path information from string.
                Console.WriteLine("{0}",
                    dir.Substring(dir.LastIndexOf("\\") + 1));
            }
            Console.WriteLine("{0} directories found.",
                dirs.Count<string>().ToString());

            // Optionally create a List collection.
            List<string> workDirs = new List<string>(dirs);
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
open System
open System.IO

try
    let dirPath = @"\\archives\2009\reports"

    let dirs = 
        Directory.EnumerateDirectories(dirPath, "dv_*")
        |> Seq.cache

    // Show results.
    for dir in dirs do
        // Remove path information from string.
        printfn $"{dir.Substring(dir.LastIndexOf '\\' + 1)}"
    printfn $"{Seq.length dirs} directories found."

    // Optionally create a list collection.
    let workDirs = Seq.toList dirs
    ()
    
with 
| :? UnauthorizedAccessException as uaEx ->
    printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
    printfn $"{pathEx.Message}"
Imports System.Collections.Generic
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            Dim dirPath As String = "\\archives\2009\reports"

            ' LINQ query.
            Dim dirs = From folder In _
                Directory.EnumerateDirectories(dirPath, "dv_*")
            For Each folder In dirs
                ' Remove path infomration from string.
                Console.WriteLine("{0}", _
                        folder.Substring(folder.LastIndexOf("\") + 1))
            Next
            Console.WriteLine("{0} directories found.", _
                dirs.Count.ToString())

            ' Optionally create a List collection.
            Dim workDirs As List(Of String) = New List(Of String)

        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」搜尋所有以 path 字母「t」結尾的名字。 searchPattern字串「s*」搜尋所有以字母「s」開頭的path名稱。

searchPattern 不能以兩個句號(“..”)結尾,也不能包含兩個句號(“..”)後接 DirectorySeparatorChar 或 AltDirectorySeparatorChar,也不能包含任何無效字元。 你可以用這個 GetInvalidPathChars 方法查詢無效字元。

你可以在參數中 path 指定相對或絕對路徑資訊。 相對路徑資訊會被解讀為相對於目前工作目錄的資訊,你可以透過此 GetCurrentDirectory 方法來判斷。 回傳的目錄名稱會以你在參數中 path 提供的值作為前綴。 例如,如果你在參數中 path 提供相對路徑,回傳的目錄名稱也會包含相對路徑。

EnumerateDirectories和 GetDirectories 方法的不同如下:當你使用 EnumerateDirectories時,可以在整個集合回傳前就開始枚舉名稱集合;當你使用 GetDirectories時,必須等待整個名稱陣列回傳完畢才能存取陣列。 因此,當你處理多個檔案和目錄時, EnumerateDirectories 效率會更高。

回傳的集合不會被快取;每次呼叫集合 GetEnumerator 都會開始新的列舉。

適用於

EnumerateDirectories(String, String, EnumerationOptions)

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

回傳一組可枚舉的目錄全名集合,符合指定路徑中搜尋模式,並可選擇性地搜尋子目錄。

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateDirectories(System::String ^ path, System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public static System.Collections.Generic.IEnumerable<string> EnumerateDirectories(string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
static member EnumerateDirectories : string * string * System.IO.EnumerationOptions -> seq<string>
Public Shared Function EnumerateDirectories (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 不包含有效的模式。

path 或 searchPattern 為 null。

path 不成立,例如指未映射的硬碟。

path 是一個檔案名稱。

指定的路徑、檔案名稱或組合長度超過系統定義的最大長度。

來電者沒有所需的權限。

來電者沒有所需的權限。

備註

searchPattern 它可以是字面字元和萬用字元的組合,但它不支援正則表達式。 以下允許的萬用字元規定符。searchPattern

萬用字元指定器 比對
* (星號) 沒有或多個角色處於那個位置。
? (問號) 只有一個角色處於那個位置。

除了萬用卡以外的角色,都是字面上的字面角色。 例如, searchPattern 字串「*t」搜尋所有以 path 字母「t」結尾的名字。 searchPattern字串「s*」搜尋所有以字母「s」開頭的path名稱。

searchPattern 不能以兩個句號(“..”)結尾,也不能包含兩個句號(“..”)後接 DirectorySeparatorChar 或 AltDirectorySeparatorChar,也不能包含任何無效字元。 你可以用這個 GetInvalidPathChars 方法查詢無效字元。

你可以在參數中 path 指定相對或絕對路徑資訊。 相對路徑資訊會被解讀為相對於目前工作目錄的資訊,你可以透過此 GetCurrentDirectory 方法來判斷。 回傳的目錄名稱會以你在參數中 path 提供的值作為前綴。 例如,如果你在參數中 path 提供相對路徑,回傳的目錄名稱也會包含相對路徑。

EnumerateDirectories和 GetDirectories 方法的不同如下:當你使用 EnumerateDirectories時,可以在整個集合回傳前就開始枚舉名稱集合;當你使用 GetDirectories時,必須等待整個名稱陣列回傳完畢才能存取陣列。 因此,當你處理多個檔案和目錄時, EnumerateDirectories 效率會更高。

回傳的集合不會被快取;每次呼叫集合 GetEnumerator 都會開始新的列舉。

適用於

EnumerateDirectories(String, String, SearchOption)

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

回傳一組可枚舉的目錄全名,符合指定路徑中搜尋模式,並可選擇性地搜尋子目錄。

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateDirectories(System::String ^ path, System::String ^ searchPattern, System::IO::SearchOption searchOption);
public static System.Collections.Generic.IEnumerable<string> EnumerateDirectories(string path, string searchPattern, System.IO.SearchOption searchOption);
static member EnumerateDirectories : string * string * System.IO.SearchOption -> seq<string>
Public Shared Function EnumerateDirectories (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 不包含有效的模式。

path 是 null。

-或-

searchPattern 是 null。

searchOption 不是一個有效的 SearchOption 值。

path 不成立,例如指未映射的硬碟。

path 是一個檔案名稱。

指定的路徑、檔案名稱或組合長度超過系統定義的最大長度。

來電者沒有所需的權限。

來電者沒有所需的權限。

範例

以下範例列舉了指定路徑中符合特定搜尋模式的目錄。 它使用參數 searchOption 指定所有子目錄都應包含在搜尋中。

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

class Program
{

    private static void Main(string[] args)
    {
        try
        {
            string dirPath = @"\\archives\2009\reports";

            // LINQ query.
            var dirs = from dir in
                     Directory.EnumerateDirectories(dirPath, "dv_*",
                        SearchOption.AllDirectories)
                       select dir;

            // Show results.
            foreach (var dir in dirs)
            {
                // Remove path information from string.
                Console.WriteLine("{0}",
                    dir.Substring(dir.LastIndexOf("\\") + 1));
            }
            Console.WriteLine("{0} directories found.",
                dirs.Count<string>().ToString());

            // Optionally create a List collection.
            List<string> workDirs = new List<string>(dirs);
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
open System
open System.IO

try
    let dirPath = @"\\archives\2009\reports"

    let dirs =
        Directory.EnumerateDirectories(dirPath, "dv_*", SearchOption.AllDirectories)
        |> Seq.cache

    // Show results.
    for dir in dirs do
        // Remove path information from string.
        printfn $"{dir.Substring(dir.LastIndexOf '\\' + 1)}"
    printfn $"{Seq.length dirs} directories found."

    // Optionally create a List collection.
    let workDirs = Seq.toList dirs
    ()

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

Module Module1

    Sub Main()
        Try
            Dim dirPath As String = "\\archives\2009\reports"

            ' LINQ query.
            Dim dirs = From folder In _
                Directory.EnumerateDirectories(dirPath, "dv_*", _
                    SearchOption.AllDirectories)
            For Each folder In dirs
                ' Remove path infomration from string.
                Console.WriteLine("{0}", _
                        folder.Substring(folder.LastIndexOf("\") + 1))
            Next
            Console.WriteLine("{0} directories found.", _
                dirs.Count.ToString())

            ' Optionally create a List collection.
            Dim workDirs As List(Of String) = New List(Of String)

        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」搜尋所有以 path 字母「t」結尾的名字。 searchPattern字串「s*」搜尋所有以字母「s」開頭的path名稱。

searchPattern 不能以兩個句號(“..”)結尾,也不能包含兩個句號(“..”)後接 DirectorySeparatorChar 或 AltDirectorySeparatorChar,也不能包含任何無效字元。 你可以用這個 GetInvalidPathChars 方法查詢無效字元。

你可以在參數中 path 指定相對或絕對路徑資訊。 相對路徑資訊會被解讀為相對於目前工作目錄的資訊,你可以透過此 GetCurrentDirectory 方法來判斷。 回傳的目錄名稱會以你在參數中 path 提供的值作為前綴。 例如,如果你在參數中 path 提供相對路徑,回傳的目錄名稱也會包含相對路徑。

EnumerateDirectories和 GetDirectories 方法的不同如下:當你使用 EnumerateDirectories時,可以在整個集合回傳前就開始枚舉名稱集合;當你使用 GetDirectories時,必須等待整個名稱陣列回傳完畢才能存取陣列。 因此,當你處理多個檔案和目錄時, EnumerateDirectories 效率會更高。

回傳的集合不會被快取;每次呼叫集合 GetEnumerator 都會開始新的列舉。

適用於