DirectoryInfo.EnumerateDirectories Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrátí výčtovou kolekci informací o adresáři v aktuálním adresáři.
Přetížení
EnumerateDirectories(String, SearchOption) |
Vrátí výčtovou kolekci informací o adresáři, která odpovídá zadanému vzoru vyhledávání a možnosti podadresáře vyhledávání. |
EnumerateDirectories(String, EnumerationOptions) |
Vrátí výčtovou kolekci informací adresáře, která odpovídá zadanému vzoru vyhledávání a možnostem výčtu. |
EnumerateDirectories() |
Vrátí výčtovou kolekci informací adresáře v aktuálním adresáři. |
EnumerateDirectories(String) |
Vrátí výčtovou kolekci informací adresáře, která odpovídá zadanému vzoru vyhledávání. |
EnumerateDirectories(String, SearchOption)
- Zdroj:
- DirectoryInfo.cs
- Zdroj:
- DirectoryInfo.cs
- Zdroj:
- DirectoryInfo.cs
Vrátí výčtovou kolekci informací o adresáři, která odpovídá zadanému vzoru vyhledávání a možnosti podadresáře vyhledávání.
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)
Parametry
- searchPattern
- String
Hledaný řetězec, který se má shodovat s názvy adresářů. Tento parametr může obsahovat kombinaci platné literálové cesty a zástupných znaků (* a ?), ale nepodporuje regulární výrazy.
- searchOption
- SearchOption
Jedna z hodnot výčtu, která určuje, zda má operace hledání obsahovat pouze aktuální adresář nebo všechny podadresáře. Výchozí hodnota je TopDirectoryOnly.
Návraty
Výčtovou kolekci adresářů, která odpovídá searchPattern
a searchOption
.
Výjimky
searchPattern
je null
.
searchOption
není platná SearchOption hodnota.
Cesta zapouzdřená v objektu DirectoryInfo je neplatná (například je na nenamapované jednotce).
Volající nemá požadované oprávnění.
Příklady
Následující příklad používá tuto metodu a metodu EnumerateFiles k vytvoření výčtu souborů a adresářů v počátečním adresáři a zobrazení názvu a velikosti všech souborů větších než 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
Poznámky
searchPattern
může být kombinací literálů a zástupných znaků, ale nepodporuje regulární výrazy. V systému jsou povoleny následující specifikátory zástupných searchPattern
znaků.
Specifikátor zástupných znaků | Shody |
---|---|
* (hvězdička) | Na této pozici není žádný nebo více znaků. |
? (otazník) | Na této pozici není žádný nebo jeden znak. |
Jiné znaky než zástupný znak jsou literální znaky. Například řetězec "*t" vyhledá všechna jména končící písmenem "t". ". Řetězec searchPattern
"s*" vyhledá všechna jména path
začínající písmenem "s".
Metody EnumerateDirectories a GetDirectories se liší takto:
Při použití příkazu EnumerateDirectoriesmůžete začít s vytvářením výčtu DirectoryInfo kolekce objektů před vrácením celé kolekce.
Pokud použijete , GetDirectoriesmusíte počkat na vrácení celého pole DirectoryInfo objektů, abyste mohli získat přístup k poli.
Proto, když pracujete s mnoha soubory a adresáři, EnumerateDirectories může být efektivnější.
Tato metoda předem vyplní hodnoty následujících DirectoryInfo vlastností:
Vrácená kolekce není uložena v mezipaměti; každé volání metody v GetEnumerator kolekci spustí nový výčet.
Platí pro
EnumerateDirectories(String, EnumerationOptions)
- Zdroj:
- DirectoryInfo.cs
- Zdroj:
- DirectoryInfo.cs
- Zdroj:
- DirectoryInfo.cs
Vrátí výčtovou kolekci informací adresáře, která odpovídá zadanému vzoru vyhledávání a možnostem výčtu.
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)
Parametry
- searchPattern
- String
Hledaný řetězec, který se má shodovat s názvy adresářů. Tento parametr může obsahovat kombinaci platné literálové cesty a zástupných znaků (* a ?), ale nepodporuje regulární výrazy.
- enumerationOptions
- EnumerationOptions
Objekt, který popisuje konfiguraci vyhledávání a výčtu, která se má použít.
Návraty
Výčtovou kolekci adresářů, která odpovídá searchPattern
a enumerationOptions
.
Výjimky
searchPattern
je null
.
Cesta zapouzdřená v objektu DirectoryInfo je neplatná (například je na nenamapované jednotce).
Volající nemá požadované oprávnění.
Poznámky
searchPattern
může být kombinací literálů a zástupných znaků, ale nepodporuje regulární výrazy. V systému jsou povoleny následující specifikátory zástupných searchPattern
znaků.
Specifikátor zástupných znaků | Shody |
---|---|
* (hvězdička) | Na této pozici není žádný nebo více znaků. |
? (otazník) | Na této pozici není žádný nebo jeden znak. |
Jiné znaky než zástupný znak jsou literální znaky. Například řetězec "*t" vyhledá všechna jména končící písmenem "t". ". Řetězec searchPattern
"s*" vyhledá všechna jména path
začínající písmenem "s".
Metody EnumerateDirectories a GetDirectories se liší takto:
Při použití příkazu EnumerateDirectoriesmůžete začít s vytvářením výčtu DirectoryInfo kolekce objektů před vrácením celé kolekce.
Pokud použijete , GetDirectoriesmusíte počkat na vrácení celého pole DirectoryInfo objektů, abyste mohli získat přístup k poli.
Proto, když pracujete s mnoha soubory a adresáři, EnumerateDirectories může být efektivnější.
Tato metoda předem vyplní hodnoty následujících DirectoryInfo vlastností:
Vrácená kolekce není uložena v mezipaměti; každé volání metody v GetEnumerator kolekci spustí nový výčet.
Platí pro
EnumerateDirectories()
- Zdroj:
- DirectoryInfo.cs
- Zdroj:
- DirectoryInfo.cs
- Zdroj:
- DirectoryInfo.cs
Vrátí výčtovou kolekci informací adresáře v aktuálním adresáři.
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)
Návraty
Výčet kolekce adresářů v aktuálním adresáři.
Výjimky
Cesta zapouzdřená v objektu DirectoryInfo je neplatná (například je na nenamapované jednotce).
Volající nemá požadované oprávnění.
Příklady
Následující příklad vytvoří výčet podadresářů v adresáři C:\Program Files a pomocí dotazu LINQ vrátí názvy všech adresářů, které byly vytvořeny před 2009 kontrolou hodnoty CreationTimeUtc vlastnosti.
Pokud potřebujete pouze názvy podadresářů, použijte statickou Directory třídu pro lepší výkon. Příklad najdete v EnumerateDirectories(String) metodě .
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
Poznámky
Metody EnumerateDirectories a GetDirectories se liší takto:
Při použití příkazu EnumerateDirectoriesmůžete začít s vytvářením výčtu DirectoryInfo kolekce objektů před vrácením celé kolekce.
Pokud použijete , GetDirectoriesmusíte počkat na vrácení celého pole DirectoryInfo objektů, abyste mohli získat přístup k poli.
Proto, když pracujete s mnoha soubory a adresáři, EnumerateDirectories může být efektivnější.
Tato metoda předem vyplní hodnoty následujících DirectoryInfo vlastností:
Vrácená kolekce není uložena v mezipaměti; každé volání metody v GetEnumerator kolekci spustí nový výčet.
Platí pro
EnumerateDirectories(String)
- Zdroj:
- DirectoryInfo.cs
- Zdroj:
- DirectoryInfo.cs
- Zdroj:
- DirectoryInfo.cs
Vrátí výčtovou kolekci informací adresáře, která odpovídá zadanému vzoru hledání.
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)
Parametry
- searchPattern
- String
Hledaný řetězec, který se má shodovat s názvy adresářů. Tento parametr může obsahovat kombinaci platné literálové cesty a zástupných znaků (* a ?), ale nepodporuje regulární výrazy.
Návraty
Výčtová kolekce adresářů, která odpovídá searchPattern
.
Výjimky
searchPattern
je null
.
Cesta zapouzdřená v objektu DirectoryInfo je neplatná (například je na nenamapované jednotce).
Volající nemá požadované oprávnění.
Poznámky
searchPattern
může být kombinací literálů a zástupných znaků, ale nepodporuje regulární výrazy. V systému jsou povoleny následující specifikátory zástupných searchPattern
znaků.
Specifikátor zástupných znaků | Shody |
---|---|
* (hvězdička) | Na této pozici není žádný nebo více znaků. |
? (otazník) | Na této pozici není žádný nebo jeden znak. |
Jiné znaky než zástupný znak jsou literální znaky. Například řetězec "*t" vyhledá všechna jména končící písmenem "t". ". Řetězec searchPattern
"s*" vyhledá všechna jména path
začínající písmenem "s".
Metody EnumerateDirectories a GetDirectories se liší takto:
Při použití příkazu EnumerateDirectoriesmůžete začít s vytvářením výčtu DirectoryInfo kolekce objektů před vrácením celé kolekce.
Pokud použijete , GetDirectoriesmusíte počkat na vrácení celého pole DirectoryInfo objektů, abyste mohli získat přístup k poli.
Proto, když pracujete s mnoha soubory a adresáři, EnumerateDirectories může být efektivnější.
Tato metoda předem vyplní hodnoty následujících DirectoryInfo vlastností:
Vrácená kolekce není uložena v mezipaměti; každé volání metody v GetEnumerator kolekci spustí nový výčet.