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 коллекции будет запускать новое перечисление.