DirectoryInfo.EnumerateDirectories Methode

Definitie

Retourneert een inventariserbare verzameling mapgegevens in de huidige map.

Overloads

Name Description
EnumerateDirectories(String, SearchOption)

Retourneert een inventariserbare verzameling mapgegevens die overeenkomen met een opgegeven zoekpatroon en submapoptie voor zoeken.

EnumerateDirectories(String, EnumerationOptions)

Retourneert een inventariserbare verzameling mapgegevens die overeenkomen met het opgegeven zoekpatroon en de opsommingsopties.

EnumerateDirectories()

Retourneert een inventariserbare verzameling mapgegevens in de huidige map.

EnumerateDirectories(String)

Retourneert een inventariserbare verzameling mapgegevens die overeenkomen met een opgegeven zoekpatroon.

EnumerateDirectories(String, SearchOption)

Retourneert een inventariserbare verzameling mapgegevens die overeenkomen met een opgegeven zoekpatroon en submapoptie voor zoeken.

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)

Parameters

searchPattern
String

De zoekreeks die overeenkomt met de namen van mappen. Deze parameter kan een combinatie van geldig letterlijke tekens en jokertekens (* en ?) bevatten, maar biedt geen ondersteuning voor reguliere expressies.

searchOption
SearchOption

Een van de opsommingswaarden die aangeeft of de zoekbewerking alleen de huidige map of alle submappen moet bevatten. De standaardwaarde is TopDirectoryOnly.

Retouren

Een inventariserbare verzameling mappen die overeenkomen searchPattern met en searchOption.

Uitzonderingen

searchPattern is null.

searchOption is geen geldige SearchOption waarde.

Het pad dat in het DirectoryInfo object is ingekapseld, is ongeldig (bijvoorbeeld op een niet-toegewezen station).

De beller heeft niet de vereiste machtiging.

Voorbeelden

In het volgende voorbeeld wordt deze methode en de EnumerateFiles methode gebruikt om de bestanden en mappen in de beginmap op te sommen en de naam en grootte van bestanden van meer dan 10 MB weer te geven.

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

Opmerkingen

searchPattern kan een combinatie zijn van letterlijke tekens en jokertekens, maar biedt geen ondersteuning voor reguliere expressies. De volgende jokertekenaanduidingen zijn toegestaan in searchPattern.

Jokertekenaanduiding Overeenkomsten
* (sterretje) Nul of meer tekens op die positie.
? (vraagteken) Nul of één teken op die positie.

Andere tekens dan het jokerteken zijn letterlijke tekens. Met de tekenreeks '*t' wordt bijvoorbeeld gezocht naar alle namen die eindigen op de letter 't'. ". De searchPattern tekenreeks 's*' zoekt naar alle namen in path het begin met de letter 's'.

De EnumerateDirectories en GetDirectories methoden verschillen als volgt:

  • Wanneer u dit gebruikt EnumerateDirectories, kunt u beginnen met het inventariseren van DirectoryInfo de verzameling objecten voordat de hele verzameling wordt geretourneerd.

  • Wanneer u deze functie gebruikt GetDirectories, moet u wachten totdat de hele matrix met DirectoryInfo objecten wordt geretourneerd voordat u toegang hebt tot de matrix.

Daarom kan het efficiënter zijn wanneer u met veel bestanden en mappen EnumerateDirectories werkt.

Met deze methode worden de waarden van de volgende DirectoryInfo eigenschappen vooraf ingevuld:

De geretourneerde verzameling wordt niet in de cache opgeslagen; elke aanroep van de GetEnumerator methode in de verzameling start een nieuwe opsomming.

Van toepassing op

EnumerateDirectories(String, EnumerationOptions)

Retourneert een inventariserbare verzameling mapgegevens die overeenkomen met het opgegeven zoekpatroon en de opsommingsopties.

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)

Parameters

searchPattern
String

De zoekreeks die overeenkomt met de namen van mappen. Deze parameter kan een combinatie van geldig letterlijke tekens en jokertekens (* en ?) bevatten, maar biedt geen ondersteuning voor reguliere expressies.

enumerationOptions
EnumerationOptions

Een object dat de zoek- en opsommingsconfiguratie beschrijft die moet worden gebruikt.

Retouren

Een inventariserbare verzameling mappen die overeenkomen searchPattern met en enumerationOptions.

Uitzonderingen

searchPattern is null.

Het pad dat in het DirectoryInfo object is ingekapseld, is ongeldig (bijvoorbeeld op een niet-toegewezen station).

De beller heeft niet de vereiste machtiging.

Opmerkingen

searchPattern kan een combinatie zijn van letterlijke tekens en jokertekens, maar biedt geen ondersteuning voor reguliere expressies. De volgende jokertekenaanduidingen zijn toegestaan in searchPattern.

Jokertekenaanduiding Overeenkomsten
* (sterretje) Nul of meer tekens op die positie.
? (vraagteken) Nul of één teken op die positie.

Andere tekens dan het jokerteken zijn letterlijke tekens. Met de tekenreeks '*t' wordt bijvoorbeeld gezocht naar alle namen die eindigen op de letter 't'. ". De searchPattern tekenreeks 's*' zoekt naar alle namen in path het begin met de letter 's'.

De EnumerateDirectories en GetDirectories methoden verschillen als volgt:

  • Wanneer u dit gebruikt EnumerateDirectories, kunt u beginnen met het inventariseren van DirectoryInfo de verzameling objecten voordat de hele verzameling wordt geretourneerd.

  • Wanneer u deze functie gebruikt GetDirectories, moet u wachten totdat de hele matrix met DirectoryInfo objecten wordt geretourneerd voordat u toegang hebt tot de matrix.

Daarom kan het efficiënter zijn wanneer u met veel bestanden en mappen EnumerateDirectories werkt.

Met deze methode worden de waarden van de volgende DirectoryInfo eigenschappen vooraf ingevuld:

De geretourneerde verzameling wordt niet in de cache opgeslagen; elke aanroep van de GetEnumerator methode in de verzameling start een nieuwe opsomming.

Van toepassing op

EnumerateDirectories()

Retourneert een inventariserbare verzameling mapgegevens in de huidige map.

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)

Retouren

Een inventariserbare verzameling mappen in de huidige map.

Uitzonderingen

Het pad dat in het DirectoryInfo object is ingekapseld, is ongeldig (bijvoorbeeld op een niet-toegewezen station).

De beller heeft niet de vereiste machtiging.

Voorbeelden

In het volgende voorbeeld worden de submappen in de map C:\Program Files opgesomd en wordt een LINQ-query gebruikt om de namen te retourneren van alle mappen die vóór 2009 zijn gemaakt door de waarde van de CreationTimeUtc eigenschap te controleren.

Als u alleen de namen van de submappen nodig hebt, gebruikt u de statische Directory klasse voor betere prestaties. Zie de EnumerateDirectories(String) methode voor een voorbeeld.

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

Opmerkingen

De EnumerateDirectories en GetDirectories methoden verschillen als volgt:

  • Wanneer u dit gebruikt EnumerateDirectories, kunt u beginnen met het inventariseren van DirectoryInfo de verzameling objecten voordat de hele verzameling wordt geretourneerd.

  • Wanneer u deze functie gebruikt GetDirectories, moet u wachten totdat de hele matrix met DirectoryInfo objecten wordt geretourneerd voordat u toegang hebt tot de matrix.

Daarom kan het efficiënter zijn wanneer u met veel bestanden en mappen EnumerateDirectories werkt.

Met deze methode worden de waarden van de volgende DirectoryInfo eigenschappen vooraf ingevuld:

De geretourneerde verzameling wordt niet in de cache opgeslagen; elke aanroep van de GetEnumerator methode in de verzameling start een nieuwe opsomming.

Van toepassing op

EnumerateDirectories(String)

Retourneert een inventariserbare verzameling mapgegevens die overeenkomen met een opgegeven zoekpatroon.

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)

Parameters

searchPattern
String

De zoekreeks die overeenkomt met de namen van mappen. Deze parameter kan een combinatie van geldig letterlijke tekens en jokertekens (* en ?) bevatten, maar biedt geen ondersteuning voor reguliere expressies.

Retouren

Een inventariserbare verzameling mappen die overeenkomen met searchPattern.

Uitzonderingen

searchPattern is null.

Het pad dat in het DirectoryInfo object is ingekapseld, is ongeldig (bijvoorbeeld op een niet-toegewezen station).

De beller heeft niet de vereiste machtiging.

Opmerkingen

searchPattern kan een combinatie zijn van letterlijke tekens en jokertekens, maar biedt geen ondersteuning voor reguliere expressies. De volgende jokertekenaanduidingen zijn toegestaan in searchPattern.

Jokertekenaanduiding Overeenkomsten
* (sterretje) Nul of meer tekens op die positie.
? (vraagteken) Nul of één teken op die positie.

Andere tekens dan het jokerteken zijn letterlijke tekens. Met de tekenreeks '*t' wordt bijvoorbeeld gezocht naar alle namen die eindigen op de letter 't'. ". De searchPattern tekenreeks 's*' zoekt naar alle namen in path het begin met de letter 's'.

De EnumerateDirectories en GetDirectories methoden verschillen als volgt:

  • Wanneer u dit gebruikt EnumerateDirectories, kunt u beginnen met het inventariseren van DirectoryInfo de verzameling objecten voordat de hele verzameling wordt geretourneerd.

  • Wanneer u deze functie gebruikt GetDirectories, moet u wachten totdat de hele matrix met DirectoryInfo objecten wordt geretourneerd voordat u toegang hebt tot de matrix.

Daarom kan het efficiënter zijn wanneer u met veel bestanden en mappen EnumerateDirectories werkt.

Met deze methode worden de waarden van de volgende DirectoryInfo eigenschappen vooraf ingevuld:

De geretourneerde verzameling wordt niet in de cache opgeslagen; elke aanroep van de GetEnumerator methode in de verzameling start een nieuwe opsomming.

Van toepassing op