Udostępnij za pośrednictwem


Directory.EnumerateDirectories Metoda

Definicja

Zwraca wyliczaną kolekcję pełnych nazw katalogów spełniających określone kryteria.

Przeciążenia

EnumerateDirectories(String)

Zwraca wyliczalną kolekcję pełnych nazw katalogu w określonej ścieżce.

EnumerateDirectories(String, String)

Zwraca wyliczalną kolekcję pełnych nazw katalogu, które pasują do wzorca wyszukiwania w określonej ścieżce.

EnumerateDirectories(String, String, EnumerationOptions)

Zwraca wyliczenie kolekcji pełnych nazw katalogu pasujących do wzorca wyszukiwania w określonej ścieżce i opcjonalnie wyszukuje podkatalogi.

EnumerateDirectories(String, String, SearchOption)

Zwraca wyliczalną kolekcję pełnych nazw katalogu, które pasują do wzorca wyszukiwania w określonej ścieżce i opcjonalnie wyszukuje podkatalogi.

EnumerateDirectories(String)

Źródło:
Directory.cs
Źródło:
Directory.cs
Źródło:
Directory.cs

Zwraca wyliczalną kolekcję pełnych nazw katalogu w określonej ścieżce.

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)

Parametry

path
String

Ścieżka względna lub bezwzględna do katalogu do wyszukiwania. W tym ciągu nie jest rozróżniana wielkość liter.

Zwraca

Wyliczalna kolekcja pełnych nazw (w tym ścieżek) katalogów w katalogu określonym przez path.

Wyjątki

.NET Framework i .NET Core w wersjach starszych niż 2.1: path jest ciągiem o zerowej długości, zawiera tylko białe znaki lub zawiera nieprawidłowe znaki. Możesz wykonać zapytanie o nieprawidłowe znaki przy użyciu GetInvalidPathChars() metody .

path to null.

path jest nieprawidłowy, na przykład odwoływania się do niezamapowanego dysku.

path to nazwa pliku.

Określona ścieżka, nazwa pliku lub połączenie przekraczają maksymalną długość zdefiniowaną przez system.

Obiekt wywołujący nie posiada wymaganych uprawnień.

Obiekt wywołujący nie posiada wymaganych uprawnień.

Przykłady

Poniższy przykład wylicza katalogi najwyższego poziomu w określonej ścieżce.

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

Uwagi

W parametrze można określić informacje o ścieżce względnej lub bezwzględnej path . Informacje o ścieżce względnej są interpretowane jako względem bieżącego katalogu roboczego, który można określić przy użyciu GetCurrentDirectory metody . Zwrócone nazwy katalogów są poprzedzone wartością podaną w parametrze path . Jeśli na przykład podasz ścieżkę względną w parametrze path , zwrócone nazwy katalogów będą zawierać ścieżkę względną.

Metody EnumerateDirectories i GetDirectories różnią się w następujący sposób: w przypadku używania metody EnumerateDirectoriesmożna rozpocząć wyliczanie kolekcji nazw przed zwróceniem całej kolekcji. W przypadku użycia metody GetDirectoriesnależy poczekać na zwrócenie całej tablicy nazw, zanim będzie można uzyskać dostęp do tablicy. W związku z tym podczas pracy z wieloma plikami i katalogami EnumerateDirectories może być wydajniejszy.

Zwrócona kolekcja nie jest buforowana; każde wywołanie elementu GetEnumerator w kolekcji rozpocznie nową wyliczenie.

Dotyczy

EnumerateDirectories(String, String)

Źródło:
Directory.cs
Źródło:
Directory.cs
Źródło:
Directory.cs

Zwraca wyliczalną kolekcję pełnych nazw katalogu, które pasują do wzorca wyszukiwania w określonej ścieżce.

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)

Parametry

path
String

Ścieżka względna lub bezwzględna do katalogu do wyszukiwania. W tym ciągu nie jest rozróżniana wielkość liter.

searchPattern
String

Ciąg wyszukiwania zgodny z nazwami katalogów w pliku path. Ten parametr może zawierać kombinację prawidłowych znaków literału i symboli wieloznacznych (* i ?), ale nie obsługuje wyrażeń regularnych.

Zwraca

Wyliczalna kolekcja pełnych nazw (w tym ścieżek) katalogów w katalogu określonym przez path i pasujących do określonego wzorca wyszukiwania.

Wyjątki

.NET Framework i .NET Core w wersjach starszych niż 2.1: path jest ciągiem o zerowej długości, zawiera tylko białe znaki lub zawiera nieprawidłowe znaki. Zapytania dotyczące nieprawidłowych znaków można wykonać za pomocą GetInvalidPathChars() metody .

-lub-

searchPattern nie zawiera prawidłowego wzorca.

path to null.

-lub-

searchPattern to null.

path jest nieprawidłowy, na przykład odwoływania się do niezamapowanego dysku.

path to nazwa pliku.

Określona ścieżka, nazwa pliku lub połączenie przekraczają maksymalną długość zdefiniowaną przez system.

Obiekt wywołujący nie posiada wymaganych uprawnień.

Obiekt wywołujący nie posiada wymaganych uprawnień.

Przykłady

Poniższy przykład wylicza katalogi najwyższego poziomu w określonej ścieżce zgodnej z określonym wzorcem wyszukiwania.

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

Uwagi

searchPattern może być kombinacją literałów i symboli wieloznacznych, ale nie obsługuje wyrażeń regularnych. Następujące specyfikatory symboli wieloznacznych są dozwolone w pliku searchPattern.

Specyfikator symboli wieloznacznych Jest zgodny z
* (gwiazdka) Zero lub więcej znaków w tej pozycji.
? (znak zapytania) Dokładnie jeden znak w tej pozycji.

Znaki inne niż symbol wieloznaczny to znaki literału. Na przykład searchPattern ciąg "*t" wyszukuje wszystkie nazwy path kończące się literą "t". Ciąg searchPattern "s*" wyszukuje wszystkie nazwy path na początku litery "s".

searchPattern nie może kończyć się dwoma kropkami ("..") lub zawierać dwa kropki (".)."), po DirectorySeparatorChar których następuje lub AltDirectorySeparatorChar, ani nie może zawierać żadnych nieprawidłowych znaków. Możesz wykonać zapytanie o nieprawidłowe znaki przy użyciu GetInvalidPathChars metody .

W parametrze można określić informacje o ścieżce względnej lub bezwzględnej path . Informacje o ścieżce względnej są interpretowane jako względem bieżącego katalogu roboczego, który można określić przy użyciu GetCurrentDirectory metody . Zwrócone nazwy katalogów są poprzedzone wartością podaną w parametrze path . Jeśli na przykład podasz ścieżkę względną w parametrze path , zwrócone nazwy katalogów będą zawierać ścieżkę względną.

Metody EnumerateDirectories i GetDirectories różnią się w następujący sposób: w przypadku używania metody EnumerateDirectoriesmożna rozpocząć wyliczanie kolekcji nazw przed zwróceniem całej kolekcji. W przypadku użycia metody GetDirectoriesnależy poczekać na zwrócenie całej tablicy nazw, zanim będzie można uzyskać dostęp do tablicy. W związku z tym podczas pracy z wieloma plikami i katalogami EnumerateDirectories może być wydajniejszy.

Zwrócona kolekcja nie jest buforowana; każde wywołanie elementu GetEnumerator w kolekcji rozpocznie nową wyliczenie.

Dotyczy

EnumerateDirectories(String, String, EnumerationOptions)

Źródło:
Directory.cs
Źródło:
Directory.cs
Źródło:
Directory.cs

Zwraca wyliczaną kolekcję pełnych nazw katalogu pasujących do wzorca wyszukiwania w określonej ścieżce i opcjonalnie wyszukuje podkatalogi.

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)

Parametry

path
String

Ścieżka względna lub bezwzględna do katalogu do wyszukiwania. W tym ciągu nie jest rozróżniana wielkość liter.

searchPattern
String

Ciąg wyszukiwania zgodny z nazwami katalogów w pliku path. Ten parametr może zawierać kombinację prawidłowych znaków literału i symboli wieloznacznych (* i ?), ale nie obsługuje wyrażeń regularnych.

enumerationOptions
EnumerationOptions

Obiekt opisujący konfigurację wyszukiwania i wyliczenia do użycia.

Zwraca

Wyliczana kolekcja pełnych nazw (w tym ścieżek) dla katalogów w katalogu określonym przez path program i pasujących do określonego wzorca wyszukiwania i opcji wyliczenia.

Wyjątki

.NET Framework i .NET Core w wersjach starszych niż 2.1: path jest ciągiem o zerowej długości, zawiera tylko białe znaki lub zawiera nieprawidłowe znaki. Możesz wykonać zapytanie o nieprawidłowe znaki przy użyciu GetInvalidPathChars() metody .

-lub-

searchPattern nie zawiera prawidłowego wzorca.

path lub searchPattern to null.

searchOption jest nieprawidłową SearchOption wartością.

path jest nieprawidłowy, na przykład odwoływania się do niezamapowanego dysku.

path to nazwa pliku.

Określona ścieżka, nazwa pliku lub połączenie przekraczają maksymalną długość zdefiniowaną przez system.

Obiekt wywołujący nie posiada wymaganych uprawnień.

Obiekt wywołujący nie posiada wymaganych uprawnień.

Uwagi

searchPattern może być kombinacją literałów i symboli wieloznacznych, ale nie obsługuje wyrażeń regularnych. Następujące specyfikatory symboli wieloznacznych są dozwolone w pliku searchPattern.

Specyfikator symboli wieloznacznych Jest zgodny z
* (gwiazdka) Zero lub więcej znaków w tej pozycji.
? (znak zapytania) Dokładnie jeden znak w tej pozycji.

Znaki inne niż symbol wieloznaczny to znaki literału. Na przykład searchPattern ciąg "*t" wyszukuje wszystkie nazwy path kończące się literą "t". Ciąg searchPattern "s*" wyszukuje wszystkie nazwy path na początku litery "s".

searchPattern nie może kończyć się dwoma kropkami ("..") lub zawierać dwa kropki (".)."), po DirectorySeparatorChar których następuje lub AltDirectorySeparatorChar, ani nie może zawierać żadnych nieprawidłowych znaków. Możesz wykonać zapytanie o nieprawidłowe znaki przy użyciu GetInvalidPathChars metody .

W parametrze można określić informacje o ścieżce względnej lub bezwzględnej path . Informacje o ścieżce względnej są interpretowane jako względem bieżącego katalogu roboczego, który można określić przy użyciu GetCurrentDirectory metody . Zwrócone nazwy katalogów są poprzedzone wartością podaną w parametrze path . Jeśli na przykład podasz ścieżkę względną w parametrze path , zwrócone nazwy katalogów będą zawierać ścieżkę względną.

Metody EnumerateDirectories i GetDirectories różnią się w następujący sposób: w przypadku użycia metody EnumerateDirectoriesmożna rozpocząć wyliczanie kolekcji nazw przed zwróceniem całej kolekcji. W przypadku użycia metody GetDirectoriesnależy poczekać na zwrócenie całej tablicy nazw, zanim będzie można uzyskać dostęp do tablicy. W związku z tym podczas pracy z wieloma plikami i katalogami EnumerateDirectories może być wydajniejszy.

Zwrócona kolekcja nie jest buforowana; każde wywołanie GetEnumerator obiektu w kolekcji spowoduje uruchomienie nowego wyliczenia.

Dotyczy

EnumerateDirectories(String, String, SearchOption)

Źródło:
Directory.cs
Źródło:
Directory.cs
Źródło:
Directory.cs

Zwraca wyliczaną kolekcję pełnych nazw katalogów pasujących do wzorca wyszukiwania w określonej ścieżce i opcjonalnie wyszukuje podkatalogi.

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)

Parametry

path
String

Ścieżka względna lub bezwzględna do katalogu do wyszukania. W tym ciągu nie jest rozróżniana wielkość liter.

searchPattern
String

Ciąg wyszukiwania zgodny z nazwami katalogów w pliku path. Ten parametr może zawierać kombinację prawidłowych znaków ścieżki literału i symboli wieloznacznych (* i ?), ale nie obsługuje wyrażeń regularnych.

searchOption
SearchOption

Jedna z wartości wyliczenia określająca, czy operacja wyszukiwania powinna zawierać tylko bieżący katalog, czy powinna zawierać wszystkie podkatalogi. Wartość domyślna to TopDirectoryOnly.

Zwraca

Wyliczana kolekcja pełnych nazw (w tym ścieżek) dla katalogów w katalogu określonym przez path program i jest zgodna z określonym wzorcem wyszukiwania i opcją wyszukiwania.

Wyjątki

.NET Framework i .NET Core w wersjach starszych niż 2.1: path jest ciągiem o zerowej długości, zawiera tylko białe znaki lub zawiera nieprawidłowe znaki. Zapytania dotyczące nieprawidłowych znaków można wykonać przy użyciu GetInvalidPathChars() metody .

-lub-

searchPattern nie zawiera prawidłowego wzorca.

path to null.

-lub-

searchPattern to null.

searchOption jest nieprawidłową SearchOption wartością.

path jest nieprawidłowy, na przykład odwołując się do niezamapowanego dysku.

path to nazwa pliku.

Określona ścieżka, nazwa pliku lub łączna długość przekracza zdefiniowaną przez system maksymalną długość.

Obiekt wywołujący nie posiada wymaganych uprawnień.

Obiekt wywołujący nie posiada wymaganych uprawnień.

Przykłady

Poniższy przykład wylicza katalogi w określonej ścieżce zgodnej z określonym wzorcem wyszukiwania. Używa parametru searchOption , aby określić, że wszystkie podkatalogi powinny być uwzględnione w wyszukiwaniu.

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

Uwagi

searchPattern może być kombinacją literałów i symboli wieloznacznych, ale nie obsługuje wyrażeń regularnych. Następujące specyfikatory symboli wieloznacznych są dozwolone w programie searchPattern.

Specyfikator symboli wieloznacznych Jest zgodny z
* (gwiazdka) Zero lub więcej znaków w tej pozycji.
? (znak zapytania) Dokładnie jeden znak w tej pozycji.

Znaki inne niż symbol wieloznaczny to znaki literału. Na przykład searchPattern ciąg "*t" wyszukuje wszystkie nazwy path kończące się literą "t". Ciąg searchPattern "s*" wyszukuje wszystkie nazwy, path zaczynając od litery "s".

searchPattern program nie może kończyć się dwoma kropkami ("..") ani zawierać dwóch kropek (".."), po których następuje DirectorySeparatorChar znak lub AltDirectorySeparatorChar, ani nie może zawierać żadnych nieprawidłowych znaków. Zapytania dotyczące nieprawidłowych znaków można wykonać przy użyciu GetInvalidPathChars metody .

W parametrze można określić informacje o ścieżce względnej lub bezwzględnej path . Informacje o ścieżce względnej są interpretowane jako względem bieżącego katalogu roboczego, który można określić przy użyciu GetCurrentDirectory metody . Zwrócone nazwy katalogów są poprzedzone wartością podaną w parametrze path . Jeśli na przykład podasz ścieżkę względną w parametrze path , zwrócone nazwy katalogów będą zawierać ścieżkę względną.

Metody EnumerateDirectories i GetDirectories różnią się w następujący sposób: w przypadku użycia metody EnumerateDirectoriesmożna rozpocząć wyliczanie kolekcji nazw przed zwróceniem całej kolekcji. W przypadku użycia metody GetDirectoriesnależy poczekać na zwrócenie całej tablicy nazw, zanim będzie można uzyskać dostęp do tablicy. W związku z tym podczas pracy z wieloma plikami i katalogami EnumerateDirectories może być wydajniejszy.

Zwrócona kolekcja nie jest buforowana; każde wywołanie GetEnumerator obiektu w kolekcji spowoduje uruchomienie nowego wyliczenia.

Dotyczy