Teilen über


DirectoryInfo.EnumerateDirectories Methode

Definition

Gibt eine aufzählbare Auflistung von Verzeichnisinformationen im aktuellen Verzeichnis zurück.

Überlädt

EnumerateDirectories(String, SearchOption)

Gibt eine aufzählbare Auflistung von Verzeichnisinformationen zurück, die einem angegebenen Suchmuster und einer angegebenen Option zum Durchsuchen von Unterverzeichnissen entspricht.

EnumerateDirectories(String, EnumerationOptions)

Gibt eine aufzählbare Sammlung von Verzeichnisinformationen zurück, die dem angegebenen Suchmuster und der angegebenen Option entspricht

EnumerateDirectories()

Gibt eine aufzählbare Auflistung von Verzeichnisinformationen im aktuellen Verzeichnis zurück.

EnumerateDirectories(String)

Gibt eine aufzählbare Auflistung von Verzeichnisinformationen zurück, die einem angegebenen Suchmuster entsprechen.

EnumerateDirectories(String, SearchOption)

Quelle:
DirectoryInfo.cs
Quelle:
DirectoryInfo.cs
Quelle:
DirectoryInfo.cs

Gibt eine aufzählbare Auflistung von Verzeichnisinformationen zurück, die einem angegebenen Suchmuster und einer angegebenen Option zum Durchsuchen von Unterverzeichnissen entspricht.

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)

Parameter

searchPattern
String

Die Suchzeichenfolge für die Überprüfung der Namen von Verzeichnissen auf Übereinstimmungen. Dieser Parameter kann eine Kombination aus gültigen Literalpfad- und Platzhalterzeichen (* und ?) enthalten, unterstützt jedoch keine regulären Ausdrücke.

searchOption
SearchOption

Einer der Enumerationswerte, der angibt, ob nur das aktuelle Verzeichnis oder auch alle Unterverzeichnisse durchsucht werden sollen. Der Standardwert ist TopDirectoryOnly.

Gibt zurück

Eine aufzählbare Auflistung von Verzeichnissen, die searchPattern und searchOption entspricht.

Ausnahmen

searchPattern ist null.

searchOption ist kein gültiger SearchOption-Wert.

Der im DirectoryInfo -Objekt gekapselte Pfad ist ungültig (z. B. befindet er sich auf einem nicht zugeordneten Laufwerk).

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

Beispiele

Im folgenden Beispiel werden diese Methode und die EnumerateFiles -Methode verwendet, um die Dateien und Verzeichnisse im Startverzeichnis aufzulisten und den Namen und die Größe aller Dateien über 10 MB anzuzeigen.

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

Hinweise

searchPattern kann eine Kombination von Literal-und Platzhalterzeichen, jedoch werden reguläre Ausdrücke nicht unterstützt. Die folgenden Wildcard-Spezifizierer sind in searchPatternzulässig.

Wildcard-Spezifizierer Treffer
* (Sternchen) Null oder mehr Zeichen an dieser Position.
? (Fragezeichen) Null oder ein Zeichen in dieser Position.

Andere Zeichen als das Feldhalter sind Literalzeichen. Die Zeichenfolge "*t" sucht beispielsweise nach allen Namen, die mit dem Buchstaben "t" enden. ". Die searchPattern Zeichenfolge "s*" sucht nach allen Namen, path die mit dem Buchstaben "s" beginnen.

Die EnumerateDirectories Methoden und GetDirectories unterscheiden sich wie folgt:

  • Wenn Sie verwenden EnumerateDirectories, können Sie mit der Auflistung der DirectoryInfo Objekte beginnen, bevor die gesamte Auflistung zurückgegeben wird.

  • Wenn Sie verwenden GetDirectories, müssen Sie warten, bis das gesamte Array von DirectoryInfo Objekten zurückgegeben wird, bevor Sie auf das Array zugreifen können.

Wenn Sie mit vielen Dateien und Verzeichnissen arbeiten, EnumerateDirectories kann es daher effizienter sein.

Diese Methode füllt die Werte der folgenden DirectoryInfo Eigenschaften vorab auf:

Die zurückgegebene Sammlung wird nicht zwischengespeichert. Jeder Aufruf der GetEnumerator -Methode in der Auflistung startet eine neue Enumeration.

Gilt für:

EnumerateDirectories(String, EnumerationOptions)

Quelle:
DirectoryInfo.cs
Quelle:
DirectoryInfo.cs
Quelle:
DirectoryInfo.cs

Gibt eine aufzählbare Sammlung von Verzeichnisinformationen zurück, die dem angegebenen Suchmuster und der angegebenen Option entspricht

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)

Parameter

searchPattern
String

Die Suchzeichenfolge für die Überprüfung der Namen von Verzeichnissen auf Übereinstimmungen. Dieser Parameter kann eine Kombination aus gültigen Literalpfad- und Platzhalterzeichen (* und ?) enthalten, unterstützt jedoch keine regulären Ausdrücke.

enumerationOptions
EnumerationOptions

Ein Objekt, das die zu verwendende Such- und Enumerationskonfiguration beschreibt.

Gibt zurück

Eine aufzählbare Auflistung von Verzeichnissen, die searchPattern und enumerationOptions entspricht.

Ausnahmen

searchPattern ist null.

Der im DirectoryInfo -Objekt gekapselte Pfad ist ungültig (z. B. befindet er sich auf einem nicht zugeordneten Laufwerk).

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

Hinweise

searchPattern kann eine Kombination von Literal-und Platzhalterzeichen, jedoch werden reguläre Ausdrücke nicht unterstützt. Die folgenden Wildcard-Spezifizierer sind in searchPatternzulässig.

Wildcard-Spezifizierer Treffer
* (Sternchen) Null oder mehr Zeichen an dieser Position.
? (Fragezeichen) Null oder ein Zeichen in dieser Position.

Andere Zeichen als das Feldhalter sind Literalzeichen. Die Zeichenfolge "*t" sucht beispielsweise nach allen Namen, die mit dem Buchstaben "t" enden. ". Die searchPattern Zeichenfolge "s*" sucht nach allen Namen, path die mit dem Buchstaben "s" beginnen.

Die EnumerateDirectories Methoden und GetDirectories unterscheiden sich wie folgt:

  • Wenn Sie verwenden EnumerateDirectories, können Sie mit der Auflistung der DirectoryInfo Objekte beginnen, bevor die gesamte Auflistung zurückgegeben wird.

  • Wenn Sie verwenden GetDirectories, müssen Sie warten, bis das gesamte Array von DirectoryInfo Objekten zurückgegeben wird, bevor Sie auf das Array zugreifen können.

Wenn Sie mit vielen Dateien und Verzeichnissen arbeiten, EnumerateDirectories kann es daher effizienter sein.

Diese Methode füllt die Werte der folgenden DirectoryInfo Eigenschaften vorab auf:

Die zurückgegebene Sammlung wird nicht zwischengespeichert. Jeder Aufruf der GetEnumerator -Methode in der Auflistung startet eine neue Enumeration.

Gilt für:

EnumerateDirectories()

Quelle:
DirectoryInfo.cs
Quelle:
DirectoryInfo.cs
Quelle:
DirectoryInfo.cs

Gibt eine aufzählbare Auflistung von Verzeichnisinformationen im aktuellen Verzeichnis zurück.

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)

Gibt zurück

Eine aufzählbare Auflistung der Verzeichnisse im aktuellen Verzeichnis.

Ausnahmen

Der im DirectoryInfo -Objekt gekapselte Pfad ist ungültig (z. B. befindet er sich auf einem nicht zugeordneten Laufwerk).

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

Beispiele

Das folgende Beispiel listet die Unterverzeichnisse unter dem Verzeichnis C:\Programme auf und verwendet eine LINQ-Abfrage, um die Namen aller Verzeichnisse zurückzugeben, die vor 2009 erstellt wurden, indem der Wert der CreationTimeUtc Eigenschaft überprüft wird.

Wenn Sie nur die Namen der Unterverzeichnisse benötigen, verwenden Sie die statische Directory Klasse, um die Leistung zu verbessern. Ein Beispiel finden Sie in der EnumerateDirectories(String) -Methode.

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

Hinweise

Die EnumerateDirectories Methoden und GetDirectories unterscheiden sich wie folgt:

  • Wenn Sie verwenden EnumerateDirectories, können Sie mit der Auflistung der DirectoryInfo Objekte beginnen, bevor die gesamte Auflistung zurückgegeben wird.

  • Wenn Sie verwenden GetDirectories, müssen Sie warten, bis das gesamte Array von DirectoryInfo Objekten zurückgegeben wird, bevor Sie auf das Array zugreifen können.

Wenn Sie mit vielen Dateien und Verzeichnissen arbeiten, EnumerateDirectories kann es daher effizienter sein.

Diese Methode füllt die Werte der folgenden DirectoryInfo Eigenschaften vorab auf:

Die zurückgegebene Sammlung wird nicht zwischengespeichert. Jeder Aufruf der GetEnumerator -Methode in der Auflistung startet eine neue Enumeration.

Gilt für:

EnumerateDirectories(String)

Quelle:
DirectoryInfo.cs
Quelle:
DirectoryInfo.cs
Quelle:
DirectoryInfo.cs

Gibt eine aufzählbare Auflistung von Verzeichnisinformationen zurück, die einem angegebenen Suchmuster entsprechen.

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)

Parameter

searchPattern
String

Die Suchzeichenfolge für die Überprüfung der Namen von Verzeichnissen auf Übereinstimmungen. Dieser Parameter kann eine Kombination aus gültigen Literalpfad- und Platzhalterzeichen (* und ?) enthalten, unterstützt jedoch keine regulären Ausdrücke.

Gibt zurück

Eine aufzählbare Auflistung von Verzeichnissen, die searchPattern entspricht.

Ausnahmen

searchPattern ist null.

Der im DirectoryInfo -Objekt gekapselte Pfad ist ungültig (z. B. befindet er sich auf einem nicht zugeordneten Laufwerk).

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

Hinweise

searchPattern kann eine Kombination von Literal-und Platzhalterzeichen, jedoch werden reguläre Ausdrücke nicht unterstützt. Die folgenden Wildcard-Spezifizierer sind in searchPatternzulässig.

Wildcard-Spezifizierer Treffer
* (Sternchen) Null oder mehr Zeichen an dieser Position.
? (Fragezeichen) Null oder ein Zeichen in dieser Position.

Andere Zeichen als das Feldhalter sind Literalzeichen. Die Zeichenfolge "*t" sucht beispielsweise nach allen Namen, die mit dem Buchstaben "t" enden. ". Die searchPattern Zeichenfolge "s*" sucht nach allen Namen, path die mit dem Buchstaben "s" beginnen.

Die EnumerateDirectories Methoden und GetDirectories unterscheiden sich wie folgt:

  • Wenn Sie verwenden EnumerateDirectories, können Sie mit der Auflistung der DirectoryInfo Objekte beginnen, bevor die gesamte Auflistung zurückgegeben wird.

  • Wenn Sie verwenden GetDirectories, müssen Sie warten, bis das gesamte Array von DirectoryInfo Objekten zurückgegeben wird, bevor Sie auf das Array zugreifen können.

Wenn Sie mit vielen Dateien und Verzeichnissen arbeiten, EnumerateDirectories kann es daher effizienter sein.

Diese Methode füllt die Werte der folgenden DirectoryInfo Eigenschaften vorab auf:

Die zurückgegebene Sammlung wird nicht zwischengespeichert. Jeder Aufruf der GetEnumerator -Methode in der Auflistung startet eine neue Enumeration.

Gilt für: