DirectoryInfo.EnumerateDirectories Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает перечисленную коллекцию сведений о каталоге в текущем каталоге.
Перегрузки
| Имя | Описание |
|---|---|
| EnumerateDirectories(String, SearchOption) |
Возвращает перечисленную коллекцию сведений каталога, которая соответствует указанному шаблону поиска и параметру подкаталога поиска. |
| EnumerateDirectories(String, EnumerationOptions) |
Возвращает перечисляемую коллекцию сведений о каталоге, соответствующую указанному шаблону поиска и параметрам перечисления. |
| EnumerateDirectories() |
Возвращает перечисленную коллекцию сведений о каталоге в текущем каталоге. |
| EnumerateDirectories(String) |
Возвращает перечисленную коллекцию сведений о каталоге, которая соответствует указанному шаблону поиска. |
EnumerateDirectories(String, SearchOption)
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- 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 МБ.
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*" выполняет поиск всех имен, path начиная с буквы "s".
Методы EnumerateDirectories и GetDirectories отличаются следующим образом:
При использовании EnumerateDirectoriesможно начать перечисление коллекции DirectoryInfo объектов до возврата всей коллекции.
При использовании GetDirectoriesнеобходимо дождаться возврата всего массива DirectoryInfo объектов, прежде чем получить доступ к массиву.
Поэтому при работе с большим количеством файлов и каталогов EnumerateDirectories может быть более эффективным.
Этот метод предварительно заполняет значения следующих DirectoryInfo свойств:
Возвращенная коллекция не кэшируется; каждый вызов GetEnumerator метода в коллекции запустит новое перечисление.
Применяется к
EnumerateDirectories(String, EnumerationOptions)
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- 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*" выполняет поиск всех имен, path начиная с буквы "s".
Методы EnumerateDirectories и GetDirectories отличаются следующим образом:
При использовании EnumerateDirectoriesможно начать перечисление коллекции DirectoryInfo объектов до возврата всей коллекции.
При использовании GetDirectoriesнеобходимо дождаться возврата всего массива DirectoryInfo объектов, прежде чем получить доступ к массиву.
Поэтому при работе с большим количеством файлов и каталогов EnumerateDirectories может быть более эффективным.
Этот метод предварительно заполняет значения следующих DirectoryInfo свойств:
Возвращенная коллекция не кэшируется; каждый вызов GetEnumerator метода в коллекции запустит новое перечисление.
Применяется к
EnumerateDirectories()
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- 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 для возврата имен всех каталогов, созданных до 2009 года, путем проверки значения CreationTimeUtc свойства.
Если вам нужны только имена подкаталогов, используйте статический 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)
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- 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*" выполняет поиск всех имен, path начиная с буквы "s".
Методы EnumerateDirectories и GetDirectories отличаются следующим образом:
При использовании EnumerateDirectoriesможно начать перечисление коллекции DirectoryInfo объектов до возврата всей коллекции.
При использовании GetDirectoriesнеобходимо дождаться возврата всего массива DirectoryInfo объектов, прежде чем получить доступ к массиву.
Поэтому при работе с большим количеством файлов и каталогов EnumerateDirectories может быть более эффективным.
Этот метод предварительно заполняет значения следующих DirectoryInfo свойств:
Возвращенная коллекция не кэшируется; каждый вызов GetEnumerator метода в коллекции запустит новое перечисление.