Поделиться через


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 имеет значение null.

-или-

searchPattern имеет значение null.

Недопустимый 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 не содержит допустимый шаблон.

path имеет значение null.

-или-

searchPattern имеет значение null.

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

Применяется к