DirectoryInfo.EnumerateDirectories Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Returnerar en uppräkningsbar samling kataloginformation i den aktuella katalogen.
Överlagringar
| Name | Description |
|---|---|
| EnumerateDirectories(String, SearchOption) |
Returnerar en uppräkningsbar samling kataloginformation som matchar ett angivet sökmönster och sökunderkatalogalternativ. |
| EnumerateDirectories(String, EnumerationOptions) |
Returnerar en uppräkningsbar samling kataloginformation som matchar det angivna sökmönstret och uppräkningsalternativen. |
| EnumerateDirectories() |
Returnerar en uppräkningsbar samling kataloginformation i den aktuella katalogen. |
| EnumerateDirectories(String) |
Returnerar en uppräkningsbar samling kataloginformation som matchar ett angivet sökmönster. |
EnumerateDirectories(String, SearchOption)
Returnerar en uppräkningsbar samling kataloginformation som matchar ett angivet sökmönster och sökunderkatalogalternativ.
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)
Parametrar
- searchPattern
- String
Söksträngen som ska matchas mot namnen på kataloger. Den här parametern kan innehålla en kombination av giltiga teckensökväg och jokertecken (* och ?), men den stöder inte reguljära uttryck.
- searchOption
- SearchOption
Ett av uppräkningsvärdena som anger om sökåtgärden endast ska innehålla den aktuella katalogen eller alla underkataloger. Standardvärdet är TopDirectoryOnly.
Returer
En uppräkningsbar samling kataloger som matchar searchPattern och searchOption.
Undantag
searchPattern är null.
searchOption är inte ett giltigt SearchOption värde.
Sökvägen som är inkapslad i DirectoryInfo objektet är ogiltig (den finns till exempel på en ommappad enhet).
Anroparen har inte den behörighet som krävs.
Exempel
I följande exempel används den EnumerateFiles här metoden och metoden för att räkna upp filer och kataloger i startkatalogen och visa namnet och storleken på alla filer över 10 MB.
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
Kommentarer
searchPattern kan vara en kombination av literaltecken och jokertecken, men det stöder inte reguljära uttryck. Följande jokerteckensspecificerare tillåts i searchPattern.
| Jokerteckensspecificerare | Matcher |
|---|---|
| * (asterisk) | Noll eller fler tecken i den positionen. |
| ? (frågetecken) | Noll eller ett tecken i den positionen. |
Andra tecken än jokertecknet är literaltecken. Strängen "*t" söker till exempel efter alla namn som slutar med bokstaven "t". ". Strängen searchPattern "s*" söker efter alla namn från path och med bokstaven "s".
Metoderna EnumerateDirectories och GetDirectories skiljer sig åt enligt följande:
När du använder EnumerateDirectorieskan du börja räkna upp samlingen med DirectoryInfo objekt innan hela samlingen returneras.
När du använder GetDirectoriesmåste du vänta tills hela matrisen med DirectoryInfo objekt returneras innan du kan komma åt matrisen.
Därför kan det vara mer effektivt när du arbetar med många filer och kataloger EnumerateDirectories .
Den här metoden fyller i värdena för följande DirectoryInfo egenskaper i förväg:
Den returnerade samlingen cachelagras inte. varje anrop till GetEnumerator metoden i samlingen startar en ny uppräkning.
Gäller för
EnumerateDirectories(String, EnumerationOptions)
Returnerar en uppräkningsbar samling kataloginformation som matchar det angivna sökmönstret och uppräkningsalternativen.
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)
Parametrar
- searchPattern
- String
Söksträngen som ska matchas mot namnen på kataloger. Den här parametern kan innehålla en kombination av giltiga teckensökväg och jokertecken (* och ?), men den stöder inte reguljära uttryck.
- enumerationOptions
- EnumerationOptions
Ett objekt som beskriver den sök- och uppräkningskonfiguration som ska användas.
Returer
En uppräkningsbar samling kataloger som matchar searchPattern och enumerationOptions.
Undantag
searchPattern är null.
Sökvägen som är inkapslad i DirectoryInfo objektet är ogiltig (den finns till exempel på en ommappad enhet).
Anroparen har inte den behörighet som krävs.
Kommentarer
searchPattern kan vara en kombination av literaltecken och jokertecken, men det stöder inte reguljära uttryck. Följande jokerteckensspecificerare tillåts i searchPattern.
| Jokerteckensspecificerare | Matcher |
|---|---|
| * (asterisk) | Noll eller fler tecken i den positionen. |
| ? (frågetecken) | Noll eller ett tecken i den positionen. |
Andra tecken än jokertecknet är literaltecken. Strängen "*t" söker till exempel efter alla namn som slutar med bokstaven "t". ". Strängen searchPattern "s*" söker efter alla namn från path och med bokstaven "s".
Metoderna EnumerateDirectories och GetDirectories skiljer sig åt enligt följande:
När du använder EnumerateDirectorieskan du börja räkna upp samlingen med DirectoryInfo objekt innan hela samlingen returneras.
När du använder GetDirectoriesmåste du vänta tills hela matrisen med DirectoryInfo objekt returneras innan du kan komma åt matrisen.
Därför kan det vara mer effektivt när du arbetar med många filer och kataloger EnumerateDirectories .
Den här metoden fyller i värdena för följande DirectoryInfo egenskaper i förväg:
Den returnerade samlingen cachelagras inte. varje anrop till GetEnumerator metoden i samlingen startar en ny uppräkning.
Gäller för
EnumerateDirectories()
Returnerar en uppräkningsbar samling kataloginformation i den aktuella katalogen.
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)
Returer
En uppräkningsbar samling kataloger i den aktuella katalogen.
Undantag
Sökvägen som är inkapslad i DirectoryInfo objektet är ogiltig (den finns till exempel på en ommappad enhet).
Anroparen har inte den behörighet som krävs.
Exempel
I följande exempel räknas underkatalogerna upp under katalogen C:\Program Files och en LINQ-fråga används för att returnera namnen på alla kataloger som skapades före 2009 genom att kontrollera värdet för CreationTimeUtc egenskapen.
Om du bara behöver namnen på underkatalogerna använder du den statiska Directory klassen för bättre prestanda. Ett exempel finns i EnumerateDirectories(String) metoden.
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
Kommentarer
Metoderna EnumerateDirectories och GetDirectories skiljer sig åt enligt följande:
När du använder EnumerateDirectorieskan du börja räkna upp samlingen med DirectoryInfo objekt innan hela samlingen returneras.
När du använder GetDirectoriesmåste du vänta tills hela matrisen med DirectoryInfo objekt returneras innan du kan komma åt matrisen.
Därför kan det vara mer effektivt när du arbetar med många filer och kataloger EnumerateDirectories .
Den här metoden fyller i värdena för följande DirectoryInfo egenskaper i förväg:
Den returnerade samlingen cachelagras inte. varje anrop till GetEnumerator metoden i samlingen startar en ny uppräkning.
Gäller för
EnumerateDirectories(String)
Returnerar en uppräkningsbar samling kataloginformation som matchar ett angivet sökmönster.
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)
Parametrar
- searchPattern
- String
Söksträngen som ska matchas mot namnen på kataloger. Den här parametern kan innehålla en kombination av giltiga teckensökväg och jokertecken (* och ?), men den stöder inte reguljära uttryck.
Returer
En uppräkningsbar samling kataloger som matchar searchPattern.
Undantag
searchPattern är null.
Sökvägen som är inkapslad i DirectoryInfo objektet är ogiltig (den finns till exempel på en ommappad enhet).
Anroparen har inte den behörighet som krävs.
Kommentarer
searchPattern kan vara en kombination av literaltecken och jokertecken, men det stöder inte reguljära uttryck. Följande jokerteckensspecificerare tillåts i searchPattern.
| Jokerteckensspecificerare | Matcher |
|---|---|
| * (asterisk) | Noll eller fler tecken i den positionen. |
| ? (frågetecken) | Noll eller ett tecken i den positionen. |
Andra tecken än jokertecknet är literaltecken. Strängen "*t" söker till exempel efter alla namn som slutar med bokstaven "t". ". Strängen searchPattern "s*" söker efter alla namn från path och med bokstaven "s".
Metoderna EnumerateDirectories och GetDirectories skiljer sig åt enligt följande:
När du använder EnumerateDirectorieskan du börja räkna upp samlingen med DirectoryInfo objekt innan hela samlingen returneras.
När du använder GetDirectoriesmåste du vänta tills hela matrisen med DirectoryInfo objekt returneras innan du kan komma åt matrisen.
Därför kan det vara mer effektivt när du arbetar med många filer och kataloger EnumerateDirectories .
Den här metoden fyller i värdena för följande DirectoryInfo egenskaper i förväg:
Den returnerade samlingen cachelagras inte. varje anrop till GetEnumerator metoden i samlingen startar en ny uppräkning.