DirectoryInfo.EnumerateDirectories Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.