Directory.EnumerateDirectories 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳回符合指定準則之目錄全名的可列舉集合。
多載
EnumerateDirectories(String) |
傳回指定路徑中目錄全名的可列舉集合。 |
EnumerateDirectories(String, String) |
傳回指定路徑中符合搜尋模式之目錄全名的可列舉集合。 |
EnumerateDirectories(String, String, EnumerationOptions) |
傳回在所指定路徑中符合搜尋模式之目錄完整名稱的可列舉集合,並選擇性地搜尋子目錄。 |
EnumerateDirectories(String, String, SearchOption) |
傳回指定路徑中符合搜尋模式之目錄全名的可列舉集合,並選擇性地搜尋子目錄。 |
EnumerateDirectories(String)
- 來源:
- 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
傳回指定路徑中符合搜尋模式之目錄全名的可列舉集合。
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
無效,例如參考到未對應的磁碟機。
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」 會搜尋以字母 「t」 結尾的所有名稱 path
。 字串 “s*” 會 searchPattern
以字母 “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
傳回在所指定路徑中符合搜尋模式之目錄完整名稱的可列舉集合,並選擇性地搜尋子目錄。
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
。
searchOption
不是有效的 SearchOption 值。
path
無效,例如參考到未對應的磁碟機。
path
為檔案名稱。
指定的路徑、檔案名稱,或兩者合計超出系統定義的長度上限。
呼叫端沒有必要的權限。
呼叫端沒有必要的權限。
備註
searchPattern
可以是常值和通配符的組合,但不支援正則表達式。 在中 searchPattern
允許下列通配符規範。
通配符規範 | 相符項 |
---|---|
* (星號) | 該位置中的零或多個字元。 |
? (問號) | 該位置中只有一個字元。 |
通配符以外的字元是常值字元。 例如, searchPattern
字串 「*t」 會搜尋以字母 「t」 結尾的所有名稱 path
。 字串 “s*” 會 searchPattern
以字母 “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
傳回指定路徑中符合搜尋模式之目錄全名的可列舉集合,並選擇性地搜尋子目錄。
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
不包含有效模式。
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」 會搜尋以字母 「t」 結尾的所有名稱 path
。 字串 searchPattern
“s*” 會搜尋以字母 “s” 開頭的所有名稱 path
。
searchPattern
不能以兩個句號結尾 (」。」) 或包含兩個 ( 句點」。」) 後面 DirectorySeparatorChar 接著 或 AltDirectorySeparatorChar,也無法包含任何無效字元。 您可以使用 GetInvalidPathChars 方法查詢無效字元。
您可以在 參數中 path
指定相對或絕對路徑資訊。 相對路徑資訊會解譯為相對於目前工作目錄,您可以使用 方法來判斷 GetCurrentDirectory 。 傳回的目錄名稱前面會加上您在 參數中 path
提供的值。 例如,如果您在 參數中 path
提供相對路徑,傳回的目錄名稱將包含相對路徑。
EnumerateDirectories和 GetDirectories 方法不同,如下所示:當您使用 EnumerateDirectories時,可以在傳回整個集合之前開始列舉名稱的集合;當您使用 GetDirectories時,必須先等候傳回整個名稱陣列,才能存取數位。 因此,當您使用許多檔案和目錄時, EnumerateDirectories 可能會更有效率。
未快取傳回的集合;集合上的 每個呼叫 GetEnumerator 都會啟動新的列舉。