DirectoryInfo.EnumerateDirectories Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca wyliczalną kolekcję informacji o katalogu w bieżącym katalogu.
Przeciążenia
EnumerateDirectories(String, SearchOption) |
Zwraca wyliczalną kolekcję informacji o katalogu, która jest zgodna z określonym wzorcem wyszukiwania i opcją podkatalogu wyszukiwania. |
EnumerateDirectories(String, EnumerationOptions) |
Zwraca wyliczalną kolekcję informacji o katalogu, która jest zgodna z określonym wzorcem wyszukiwania i opcjami wyliczenia. |
EnumerateDirectories() |
Zwraca wyliczalną kolekcję informacji o katalogu w bieżącym katalogu. |
EnumerateDirectories(String) |
Zwraca wyliczalną kolekcję informacji o katalogu, która jest zgodna z określonym wzorcem wyszukiwania. |
EnumerateDirectories(String, SearchOption)
- Źródło:
- DirectoryInfo.cs
- Źródło:
- DirectoryInfo.cs
- Źródło:
- DirectoryInfo.cs
Zwraca wyliczalną kolekcję informacji o katalogu, która jest zgodna z określonym wzorcem wyszukiwania i opcją podkatalogu wyszukiwania.
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
Ciąg wyszukiwania zgodny z nazwami katalogów. Ten parametr może zawierać kombinację prawidłowych znaków literału i symboli wieloznacznych (* i ?), ale nie obsługuje wyrażeń regularnych.
- searchOption
- SearchOption
Jedna z wartości wyliczenia określająca, czy operacja wyszukiwania powinna zawierać tylko bieżący katalog, czy wszystkie podkatalogi. Wartość domyślna to TopDirectoryOnly.
Zwraca
Wyliczenie kolekcji katalogów pasujących searchPattern
do elementów i searchOption
.
Wyjątki
searchPattern
to null
.
searchOption
jest nieprawidłową SearchOption wartością.
Ścieżka hermetyzowana w DirectoryInfo obiekcie jest nieprawidłowa (na przykład znajduje się na niezamapowanym dysku).
Obiekt wywołujący nie posiada wymaganych uprawnień.
Przykłady
W poniższym przykładzie użyto tej metody i EnumerateFiles metody , aby wyliczyć pliki i katalogi w katalogu start i wyświetlić nazwę i rozmiar wszystkich plików powyżej 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
Uwagi
searchPattern
może być kombinacją literałów i symboli wieloznacznych, ale nie obsługuje wyrażeń regularnych. Następujące specyfikatory symboli wieloznacznych są dozwolone w pliku searchPattern
.
Specyfikator symboli wieloznacznych | Jest zgodny z |
---|---|
* (gwiazdka) | Zero lub więcej znaków w tej pozycji. |
? (znak zapytania) | Zero lub jeden znak w tej pozycji. |
Znaki inne niż symbol wieloznaczny to znaki literału. Na przykład ciąg "*t" wyszukuje wszystkie nazwy kończące się literą "t". ". Ciąg searchPattern
"s*" wyszukuje wszystkie nazwy path
na początku litery "s".
Metody EnumerateDirectories i GetDirectories różnią się w następujący sposób:
W przypadku korzystania z programu EnumerateDirectoriesmożna rozpocząć wyliczanie kolekcji DirectoryInfo obiektów przed zwróceniem całej kolekcji.
Gdy używasz metody GetDirectories, musisz poczekać, aż zostanie zwrócona cała tablica DirectoryInfo obiektów, zanim będzie można uzyskać dostęp do tablicy.
W związku z tym podczas pracy z wieloma plikami i katalogami EnumerateDirectories może być wydajniejszy.
Ta metoda wstępnie wypełnia wartości następujących DirectoryInfo właściwości:
Zwrócona kolekcja nie jest buforowana; każde wywołanie GetEnumerator metody w kolekcji rozpocznie nową wyliczenie.
Dotyczy
EnumerateDirectories(String, EnumerationOptions)
- Źródło:
- DirectoryInfo.cs
- Źródło:
- DirectoryInfo.cs
- Źródło:
- DirectoryInfo.cs
Zwraca wyliczalną kolekcję informacji o katalogu, która jest zgodna z określonym wzorcem wyszukiwania i opcjami wyliczenia.
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
Ciąg wyszukiwania zgodny z nazwami katalogów. Ten parametr może zawierać kombinację prawidłowych znaków literału i symboli wieloznacznych (* i ?), ale nie obsługuje wyrażeń regularnych.
- enumerationOptions
- EnumerationOptions
Obiekt opisujący konfigurację wyszukiwania i wyliczenia do użycia.
Zwraca
Wyliczenie kolekcji katalogów pasujących searchPattern
do elementów i enumerationOptions
.
Wyjątki
searchPattern
to null
.
Ścieżka hermetyzowana w DirectoryInfo obiekcie jest nieprawidłowa (na przykład znajduje się na niezamapowanym dysku).
Obiekt wywołujący nie posiada wymaganych uprawnień.
Uwagi
searchPattern
może być kombinacją literałów i symboli wieloznacznych, ale nie obsługuje wyrażeń regularnych. Następujące specyfikatory symboli wieloznacznych są dozwolone w pliku searchPattern
.
Specyfikator symboli wieloznacznych | Jest zgodny z |
---|---|
* (gwiazdka) | Zero lub więcej znaków w tej pozycji. |
? (znak zapytania) | Zero lub jeden znak w tej pozycji. |
Znaki inne niż symbol wieloznaczny to znaki literału. Na przykład ciąg "*t" wyszukuje wszystkie nazwy kończące się literą "t". ". Ciąg searchPattern
"s*" wyszukuje wszystkie nazwy path
na początku litery "s".
Metody EnumerateDirectories i GetDirectories różnią się w następujący sposób:
W przypadku korzystania z programu EnumerateDirectoriesmożna rozpocząć wyliczanie kolekcji DirectoryInfo obiektów przed zwróceniem całej kolekcji.
Gdy używasz metody GetDirectories, musisz poczekać, aż zostanie zwrócona cała tablica DirectoryInfo obiektów, zanim będzie można uzyskać dostęp do tablicy.
W związku z tym podczas pracy z wieloma plikami i katalogami EnumerateDirectories może być wydajniejszy.
Ta metoda wstępnie wypełnia wartości następujących DirectoryInfo właściwości:
Zwrócona kolekcja nie jest buforowana; każde wywołanie GetEnumerator metody w kolekcji rozpocznie nową wyliczenie.
Dotyczy
EnumerateDirectories()
- Źródło:
- DirectoryInfo.cs
- Źródło:
- DirectoryInfo.cs
- Źródło:
- DirectoryInfo.cs
Zwraca wyliczalną kolekcję informacji o katalogu w bieżącym katalogu.
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)
Zwraca
Wyliczalna kolekcja katalogów w bieżącym katalogu.
Wyjątki
Ścieżka hermetyzowana w DirectoryInfo obiekcie jest nieprawidłowa (na przykład znajduje się na niezamapowanym dysku).
Obiekt wywołujący nie posiada wymaganych uprawnień.
Przykłady
Poniższy przykład wylicza podkatalogi w katalogu C:\Program Files i używa zapytania LINQ, aby zwrócić nazwy wszystkich katalogów utworzonych przed 2009 r., sprawdzając wartość CreationTimeUtc właściwości.
Jeśli potrzebujesz tylko nazw podkatalogów, użyj klasy statycznej Directory , aby uzyskać lepszą wydajność. Aby zapoznać się z przykładem, zobacz metodę EnumerateDirectories(String) .
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
Uwagi
Metody EnumerateDirectories i GetDirectories różnią się w następujący sposób:
W przypadku korzystania z programu EnumerateDirectoriesmożna rozpocząć wyliczanie kolekcji DirectoryInfo obiektów przed zwróceniem całej kolekcji.
Gdy używasz metody GetDirectories, musisz poczekać, aż zostanie zwrócona cała tablica DirectoryInfo obiektów, zanim będzie można uzyskać dostęp do tablicy.
W związku z tym podczas pracy z wieloma plikami i katalogami EnumerateDirectories może być wydajniejszy.
Ta metoda wstępnie wypełnia wartości następujących DirectoryInfo właściwości:
Zwrócona kolekcja nie jest buforowana; każde wywołanie GetEnumerator metody w kolekcji rozpocznie nową wyliczenie.
Dotyczy
EnumerateDirectories(String)
- Źródło:
- DirectoryInfo.cs
- Źródło:
- DirectoryInfo.cs
- Źródło:
- DirectoryInfo.cs
Zwraca wyliczalną kolekcję informacji o katalogu, która jest zgodna z określonym wzorcem wyszukiwania.
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
Ciąg wyszukiwania zgodny z nazwami katalogów. Ten parametr może zawierać kombinację prawidłowych znaków literału i symboli wieloznacznych (* i ?), ale nie obsługuje wyrażeń regularnych.
Zwraca
Wyliczenie kolekcji katalogów pasujących do searchPattern
elementu .
Wyjątki
searchPattern
to null
.
Ścieżka hermetyzowana w DirectoryInfo obiekcie jest nieprawidłowa (na przykład znajduje się na niezamapowanym dysku).
Obiekt wywołujący nie posiada wymaganych uprawnień.
Uwagi
searchPattern
może być kombinacją literałów i symboli wieloznacznych, ale nie obsługuje wyrażeń regularnych. Następujące specyfikatory symboli wieloznacznych są dozwolone w pliku searchPattern
.
Specyfikator symboli wieloznacznych | Jest zgodny z |
---|---|
* (gwiazdka) | Zero lub więcej znaków w tej pozycji. |
? (znak zapytania) | Zero lub jeden znak w tej pozycji. |
Znaki inne niż symbol wieloznaczny to znaki literału. Na przykład ciąg "*t" wyszukuje wszystkie nazwy kończące się literą "t". ". Ciąg searchPattern
"s*" wyszukuje wszystkie nazwy path
na początku litery "s".
Metody EnumerateDirectories i GetDirectories różnią się w następujący sposób:
W przypadku korzystania z programu EnumerateDirectoriesmożna rozpocząć wyliczanie kolekcji DirectoryInfo obiektów przed zwróceniem całej kolekcji.
Gdy używasz metody GetDirectories, musisz poczekać, aż zostanie zwrócona cała tablica DirectoryInfo obiektów, zanim będzie można uzyskać dostęp do tablicy.
W związku z tym podczas pracy z wieloma plikami i katalogami EnumerateDirectories może być wydajniejszy.
Ta metoda wstępnie wypełnia wartości następujących DirectoryInfo właściwości:
Zwrócona kolekcja nie jest buforowana; każde wywołanie GetEnumerator metody w kolekcji rozpocznie nową wyliczenie.