DirectoryInfo.EnumerateDirectories 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回当前目录中的目录信息的可枚举集合。
重载
EnumerateDirectories(String, SearchOption) |
返回与指定的搜索模式和搜索子目录选项匹配的目录信息的可枚举集合。 |
EnumerateDirectories(String, EnumerationOptions) |
返回与指定的搜索模式和枚举选项匹配的目录信息的可枚举集合。 |
EnumerateDirectories() |
返回当前目录中的目录信息的可枚举集合。 |
EnumerateDirectories(String) |
返回与指定的搜索模式匹配的目录信息的可枚举集合。 |
EnumerateDirectories(String, SearchOption)
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
返回与指定的搜索模式和搜索子目录选项匹配的目录信息的可枚举集合。
public:
System::Collections::Generic::IEnumerable<System::IO::DirectoryInfo ^> ^ EnumerateDirectories(System::String ^ searchPattern, System::IO::SearchOption searchOption);
public System.Collections.Generic.IEnumerable<System.IO.DirectoryInfo> EnumerateDirectories (string searchPattern, System.IO.SearchOption searchOption);
member this.EnumerateDirectories : string * System.IO.SearchOption -> seq<System.IO.DirectoryInfo>
Public Function EnumerateDirectories (searchPattern As String, searchOption As SearchOption) As IEnumerable(Of DirectoryInfo)
参数
- searchPattern
- String
要与目录名匹配的搜索字符串。 此参数可以包含有效文本路径和通配符(* 和 ?)的组合,但不支持正则表达式。
- searchOption
- SearchOption
用于指定搜索操作是应仅包含当前目录还是应包含所有子目录的枚举值之一。 默认值是 TopDirectoryOnly。
返回
与 searchPattern
和 searchOption
匹配的目录的可枚举集合。
例外
searchPattern
为 null
。
searchOption
不是有效的 SearchOption 值。
封装在 DirectoryInfo 对象中的路径无效(例如,它位于未映射的驱动器上)。
调用方没有所要求的权限。
示例
以下示例使用此方法和 EnumerateFiles 方法枚举开始目录中的文件和目录,并显示超过 10 MB 的任何文件的名称和大小。
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
// Set a variable to the My Documents path.
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
DirectoryInfo diTop = new DirectoryInfo(docPath);
try
{
foreach (var fi in diTop.EnumerateFiles())
{
try
{
// Display each file over 10 MB.
if (fi.Length > 10000000)
{
Console.WriteLine($"{fi.FullName}\t\t{fi.Length:N0}");
}
}
catch (UnauthorizedAccessException unAuthTop)
{
Console.WriteLine($"{unAuthTop.Message}");
}
}
foreach (var di in diTop.EnumerateDirectories("*"))
{
try
{
foreach (var fi in di.EnumerateFiles("*", SearchOption.AllDirectories))
{
try
{
// Display each file over 10 MB.
if (fi.Length > 10000000)
{
Console.WriteLine($"{fi.FullName}\t\t{fi.Length:N0}");
}
}
catch (UnauthorizedAccessException unAuthFile)
{
Console.WriteLine($"unAuthFile: {unAuthFile.Message}");
}
}
}
catch (UnauthorizedAccessException unAuthSubDir)
{
Console.WriteLine($"unAuthSubDir: {unAuthSubDir.Message}");
}
}
}
catch (DirectoryNotFoundException dirNotFound)
{
Console.WriteLine($"{dirNotFound.Message}");
}
catch (UnauthorizedAccessException unAuthDir)
{
Console.WriteLine($"unAuthDir: {unAuthDir.Message}");
}
catch (PathTooLongException longPath)
{
Console.WriteLine($"{longPath.Message}");
}
}
}
open System
open System.IO
// Set a variable to the My Documents path.
let docPath = Environment.GetFolderPath Environment.SpecialFolder.MyDocuments
let diTop = DirectoryInfo docPath
try
for fi in diTop.EnumerateFiles() do
try
// Display each file over 10 MB.
if fi.Length > 10000000 then
printfn $"{fi.FullName}\t\t{fi.Length:N0}"
with :? UnauthorizedAccessException as unAuthTop ->
printfn $"{unAuthTop.Message}"
for di in diTop.EnumerateDirectories "*" do
try
for fi in di.EnumerateFiles("*", SearchOption.AllDirectories) do
try
// Display each file over 10 MB.
if fi.Length > 10000000 then
printfn $"{fi.FullName}\t\t{fi.Length:N0}"
with :? UnauthorizedAccessException as unAuthFile ->
printfn $"unAuthFile: {unAuthFile.Message}"
with :? UnauthorizedAccessException as unAuthSubDir ->
printfn $"unAuthSubDir: {unAuthSubDir.Message}"
with
| :? DirectoryNotFoundException as dirNotFound ->
Console.WriteLine($"{dirNotFound.Message}")
| :? UnauthorizedAccessException as unAuthDir ->
printfn $"unAuthDir: {unAuthDir.Message}"
| :? PathTooLongException as longPath ->
printfn $"{longPath.Message}"
Imports System.IO
Class Program
Public Shared Sub Main(ByVal args As String())
Dim dirPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
Dim diTop As New DirectoryInfo(dirPath)
Try
For Each fi In diTop.EnumerateFiles()
Try
' Display each file over 10 MB;
If fi.Length > 10000000 Then
Console.WriteLine("{0}" & vbTab & vbTab & "{1}", fi.FullName, fi.Length.ToString("N0"))
End If
Catch unAuthTop As UnauthorizedAccessException
Console.WriteLine($"{unAuthTop.Message}")
End Try
Next
For Each di In diTop.EnumerateDirectories("*")
Try
For Each fi In di.EnumerateFiles("*", SearchOption.AllDirectories)
Try
' // Display each file over 10 MB;
If fi.Length > 10000000 Then
Console.WriteLine("{0}" & vbTab &
vbTab & "{1}", fi.FullName, fi.Length.ToString("N0"))
End If
Catch unAuthFile As UnauthorizedAccessException
Console.WriteLine($"unAuthFile: {unAuthFile.Message}")
End Try
Next
Catch unAuthSubDir As UnauthorizedAccessException
Console.WriteLine($"unAuthSubDir: {unAuthSubDir.Message}")
End Try
Next
Catch dirNotFound As DirectoryNotFoundException
Console.WriteLine($"{dirNotFound.Message}")
Catch unAuthDir As UnauthorizedAccessException
Console.WriteLine($"unAuthDir: {unAuthDir.Message}")
Catch longPath As PathTooLongException
Console.WriteLine($"{longPath.Message}")
End Try
End Sub
End Class
注解
searchPattern
可以是文本和通配符的组合,但它不支持正则表达式。 允许在 中 searchPattern
使用以下通配符说明符。
通配符说明符 | 匹配 |
---|---|
*(星号) | 该位置的零个或多个字符。 |
? (问号) | 该位置的零个字符或一个字符。 |
通配符以外的字符是文本字符。 例如,字符串“*t”搜索以字母“t”结尾的所有名称。 ". 字符串 searchPattern
“s*”搜索以字母“s”开头的所有名称 path
。
EnumerateDirectories和 GetDirectories 方法的不同之处如下:
使用 EnumerateDirectories时,可以在返回整个集合 DirectoryInfo 之前开始枚举 对象的集合。
使用 GetDirectories时,必须等待整个对象数组 DirectoryInfo 返回,然后才能访问数组。
因此,在使用许多文件和目录时, EnumerateDirectories 可以更高效。
此方法预填充以下 DirectoryInfo 属性的值:
未缓存返回的集合;每次对集合上的 方法的调用 GetEnumerator 都将启动一个新的枚举。
适用于
EnumerateDirectories(String, EnumerationOptions)
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
返回与指定的搜索模式和枚举选项匹配的目录信息的可枚举集合。
public:
System::Collections::Generic::IEnumerable<System::IO::DirectoryInfo ^> ^ EnumerateDirectories(System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public System.Collections.Generic.IEnumerable<System.IO.DirectoryInfo> EnumerateDirectories (string searchPattern, System.IO.EnumerationOptions enumerationOptions);
member this.EnumerateDirectories : string * System.IO.EnumerationOptions -> seq<System.IO.DirectoryInfo>
Public Function EnumerateDirectories (searchPattern As String, enumerationOptions As EnumerationOptions) As IEnumerable(Of DirectoryInfo)
参数
- searchPattern
- String
要与目录名匹配的搜索字符串。 此参数可以包含有效文本路径和通配符(* 和 ?)的组合,但不支持正则表达式。
- enumerationOptions
- EnumerationOptions
描述要使用的搜索和枚举配置的对象。
返回
与 searchPattern
和 enumerationOptions
匹配的目录的可枚举集合。
例外
searchPattern
为 null
。
封装在 DirectoryInfo 对象中的路径无效(例如,它位于未映射的驱动器上)。
调用方没有所要求的权限。
注解
searchPattern
可以是文本和通配符的组合,但它不支持正则表达式。 允许在 中 searchPattern
使用以下通配符说明符。
通配符说明符 | 匹配 |
---|---|
*(星号) | 该位置的零个或多个字符。 |
? (问号) | 该位置的零个字符或一个字符。 |
通配符以外的字符是文本字符。 例如,字符串“*t”搜索以字母“t”结尾的所有名称。 ". 字符串 searchPattern
“s*”搜索以字母“s”开头的所有名称 path
。
EnumerateDirectories和 GetDirectories 方法的不同之处如下:
使用 EnumerateDirectories时,可以在返回整个集合 DirectoryInfo 之前开始枚举 对象的集合。
使用 GetDirectories时,必须等待整个对象数组 DirectoryInfo 返回,然后才能访问数组。
因此,在使用许多文件和目录时, EnumerateDirectories 可以更高效。
此方法预填充以下 DirectoryInfo 属性的值:
未缓存返回的集合;每次对集合上的 方法的调用 GetEnumerator 都将启动一个新的枚举。
适用于
EnumerateDirectories()
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
返回当前目录中的目录信息的可枚举集合。
public:
System::Collections::Generic::IEnumerable<System::IO::DirectoryInfo ^> ^ EnumerateDirectories();
public System.Collections.Generic.IEnumerable<System.IO.DirectoryInfo> EnumerateDirectories ();
member this.EnumerateDirectories : unit -> seq<System.IO.DirectoryInfo>
Public Function EnumerateDirectories () As IEnumerable(Of DirectoryInfo)
返回
当前目录中目录的可枚举集合。
例外
封装在 DirectoryInfo 对象中的路径无效(例如,它位于未映射的驱动器上)。
调用方没有所要求的权限。
示例
以下示例枚举 C:\Program Files 目录下的子目录,并使用 LINQ 查询通过检查 属性的值 CreationTimeUtc 返回 2009 年之前创建的所有目录的名称。
如果只需要子目录的名称,请使用静态 Directory 类来提高性能。 有关示例,请参阅 EnumerateDirectories(String) 方法。
using System;
using System.IO;
namespace EnumDir
{
class Program
{
static void Main(string[] args)
{
// Set a variable to the Documents path.
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
DirectoryInfo dirPrograms = new DirectoryInfo(docPath);
DateTime StartOf2009 = new DateTime(2009, 01, 01);
var dirs = from dir in dirPrograms.EnumerateDirectories()
where dir.CreationTimeUtc > StartOf2009
select new
{
ProgDir = dir,
};
foreach (var di in dirs)
{
Console.WriteLine($"{di.ProgDir.Name}");
}
}
}
}
// </Snippet1>
module program
// <Snippet1>
open System
open System.IO
// Set a variable to the Documents path.
let docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
let dirPrograms = DirectoryInfo docPath
let startOf2009 = DateTime(2009, 01, 01)
let dirs =
query {
for dir in dirPrograms.EnumerateDirectories() do
where (dir.CreationTimeUtc > startOf2009)
select {| ProgDir = dir |}
}
for di in dirs do
printfn $"{di.ProgDir.Name}"
// </Snippet1>
Imports System.IO
Module Module1
Sub Main()
Dim dirPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
Dim dirPrograms As New DirectoryInfo(dirPath)
Dim StartOf2009 As New DateTime(2009, 1, 1)
Dim dirs = From dir In dirPrograms.EnumerateDirectories()
Where dir.CreationTimeUtc > StartOf2009
For Each di As DirectoryInfo In dirs
Console.WriteLine("{0}", di.Name)
Next
End Sub
End Module
注解
EnumerateDirectories和 GetDirectories 方法的不同之处如下:
使用 EnumerateDirectories时,可以在返回整个集合 DirectoryInfo 之前开始枚举 对象的集合。
使用 GetDirectories时,必须等待整个对象数组 DirectoryInfo 返回,然后才能访问数组。
因此,在使用许多文件和目录时, EnumerateDirectories 可以更高效。
此方法预填充以下 DirectoryInfo 属性的值:
未缓存返回的集合;每次对集合上的 方法的调用 GetEnumerator 都将启动一个新的枚举。
适用于
EnumerateDirectories(String)
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
返回与指定的搜索模式匹配的目录信息的可枚举集合。
public:
System::Collections::Generic::IEnumerable<System::IO::DirectoryInfo ^> ^ EnumerateDirectories(System::String ^ searchPattern);
public System.Collections.Generic.IEnumerable<System.IO.DirectoryInfo> EnumerateDirectories (string searchPattern);
member this.EnumerateDirectories : string -> seq<System.IO.DirectoryInfo>
Public Function EnumerateDirectories (searchPattern As String) As IEnumerable(Of DirectoryInfo)
参数
- searchPattern
- String
要与目录名匹配的搜索字符串。 此参数可以包含有效文本路径和通配符(* 和 ?)的组合,但不支持正则表达式。
返回
与 searchPattern
匹配的目录的可枚举集合。
例外
searchPattern
为 null
。
封装在 DirectoryInfo 对象中的路径无效(例如,它位于未映射的驱动器上)。
调用方没有所要求的权限。
注解
searchPattern
可以是文本和通配符的组合,但它不支持正则表达式。 允许在 中 searchPattern
使用以下通配符说明符。
通配符说明符 | 匹配 |
---|---|
*(星号) | 该位置的零个或多个字符。 |
? (问号) | 该位置的零个字符或一个字符。 |
通配符以外的字符是文本字符。 例如,字符串“*t”搜索以字母“t”结尾的所有名称。 ". 字符串 searchPattern
“s*”搜索以字母“s”开头的所有名称 path
。
EnumerateDirectories和 GetDirectories 方法的不同之处如下:
使用 EnumerateDirectories时,可以在返回整个集合 DirectoryInfo 之前开始枚举 对象的集合。
使用 GetDirectories时,必须等待整个对象数组 DirectoryInfo 返回,然后才能访问数组。
因此,在使用许多文件和目录时, EnumerateDirectories 可以更高效。
此方法预填充以下 DirectoryInfo 属性的值:
未缓存返回的集合;每次对集合上的 方法的调用 GetEnumerator 都将启动一个新的枚举。