Directory.EnumerateDirectories Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает перечисляемую коллекцию полных имен каталогов, соответствующих указанным критериям.
Перегрузки
| 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 и .NET Core версий старше 2.1: 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 и .NET Core версий старше 2.1: 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" ищет все имена, path заканчивающиеся буквой "t". Строка searchPattern "s*" ищет все имена, path начинающиеся с буквы "s".
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 и .NET Core версий старше 2.1: path строка нулевой длины, содержит только пробелы или недопустимые символы. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().
-или-
searchPattern не содержит допустимый шаблон.
Параметр path или searchPattern имеет значение null.
searchOption не является допустимым значением SearchOption.
Недопустимый path: например, он ссылается на несопоставленный диск.
path — это имя файла.
Указанный путь, имя файла или их комбинация превышает максимальную длину, заданную в системе.
У вызывающего объекта отсутствует необходимое разрешение.
У вызывающего объекта отсутствует необходимое разрешение.
Комментарии
searchPattern может быть сочетанием литеральных и подстановочных знаков, но не поддерживает регулярные выражения. Следующие описатели с подстановочными знаками разрешены в searchPattern.
| Описатель подстановочных знаков | Соответствует |
|---|---|
| * (звездочка) | Ноль или более символов в этой позиции. |
| ? (вопросительный знак) | Ровно один символ в этой позиции. |
Символы, отличные от подстановочного знака, являются литеральными символами. Например, searchPattern строка "*t" ищет все имена, path заканчивающиеся буквой "t". Строка searchPattern "s*" ищет все имена, path начинающиеся с буквы "s".
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 и .NET Core версий старше 2.1: 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" ищет все имена, path заканчивающиеся буквой "t". Строка searchPattern "s*" ищет все имена, path начинающиеся с буквы "s".
searchPattern не может заканчиваться двумя точками ("..") или содержать две точки (".."), за которыми DirectorySeparatorChar следует или AltDirectorySeparatorChar, и не может содержать недопустимые символы. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars.
В параметре можно указать относительные или абсолютные сведения о path пути. Сведения об относительном пути интерпретируются как относительные к текущему рабочему каталогу, который можно определить с помощью GetCurrentDirectory метода . Возвращаемые имена каталогов имеют префикс значения, указанного в параметре path . Например, если указать относительный путь в параметре path , возвращаемые имена каталогов будут содержать относительный путь.
Методы EnumerateDirectories и GetDirectories отличаются следующим образом: при использовании EnumerateDirectoriesможно начать перечисление коллекции имен до возвращения всей коллекции; при использовании GetDirectoriesнеобходимо дождаться возвращения всего массива имен, прежде чем получить доступ к массиву. Таким образом, при работе с большим количеством файлов и каталогов EnumerateDirectories может быть более эффективным.
Возвращаемая коллекция не кэшируется; Каждый вызов в GetEnumerator коллекции будет запускать новое перечисление.