DirectoryInfo.EnumerateDirectories Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Retorna uma coleção enumerável de informações de diretório no diretório atual.
Sobrecargas
EnumerateDirectories(String, SearchOption) |
Retorna uma coleção enumerável de informações de diretório que correspondem a uma opção especificada de subdiretório de pesquisa e padrão de pesquisa. |
EnumerateDirectories(String, EnumerationOptions) |
Retorna uma coleção enumerável de informações de diretório que correspondem às opções especificadas de padrão de pesquisa e enumeração. |
EnumerateDirectories() |
Retorna uma coleção enumerável de informações de diretório no diretório atual. |
EnumerateDirectories(String) |
Retorna uma coleção enumerável de informações do diretório que correspondem a um padrão de pesquisa especificado. |
EnumerateDirectories(String, SearchOption)
- Origem:
- DirectoryInfo.cs
- Origem:
- DirectoryInfo.cs
- Origem:
- DirectoryInfo.cs
Retorna uma coleção enumerável de informações de diretório que correspondem a uma opção especificada de subdiretório de pesquisa e padrão de pesquisa.
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)
Parâmetros
- searchPattern
- String
A cadeia de caracteres de pesquisa para correspondência em relação aos nomes dos diretórios. Esse parâmetro pode conter uma combinação de caracteres curinga (* e ?) e caminho de literal, mas não dá suporte a expressões regulares.
- searchOption
- SearchOption
Um dos valores de enumeração que especifica se a operação de pesquisa deve incluir somente o diretório atual ou todos os subdiretórios. O valor padrão é TopDirectoryOnly.
Retornos
Uma coleção enumerável de diretórios que corresponde a searchPattern
e searchOption
.
Exceções
searchPattern
é null
.
searchOption
não é um valor SearchOption válido.
O caminho encapsulado no objeto DirectoryInfo é inválido (por exemplo, está em uma unidade não mapeada).
O chamador não tem a permissão necessária.
Exemplos
O exemplo a seguir usa esse método e o EnumerateFiles método para enumerar os arquivos e diretórios dentro do diretório inicial e exibir o nome e o tamanho de todos os arquivos com mais de 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
Comentários
searchPattern
pode ser uma combinação de caracteres literais e curinga, mas não dá suporte a expressões regulares. Os especificadores curinga a seguir são permitidos em searchPattern
.
Especificador curinga | Corresponde a |
---|---|
* (asterisco) | Zero ou mais caracteres nessa posição. |
? (ponto de interrogação) | Zero ou um caractere nessa posição. |
Caracteres diferentes do curinga são caracteres literais. Por exemplo, a cadeia de caracteres "*t" pesquisa todos os nomes ao terminar com a letra "t". ". A searchPattern
cadeia de caracteres "s*" procura todos os nomes no path
início com a letra "s".
Os EnumerateDirectories métodos e GetDirectories diferem da seguinte maneira:
Ao usar EnumerateDirectories, você pode começar a enumerar a coleção de DirectoryInfo objetos antes que toda a coleção seja retornada.
Ao usar GetDirectories, você deve aguardar que toda a matriz de DirectoryInfo objetos seja retornada antes de poder acessar a matriz.
Portanto, quando você está trabalhando com muitos arquivos e diretórios, EnumerateDirectories pode ser mais eficiente.
Esse método preenche previamente os valores das seguintes DirectoryInfo propriedades:
A coleção retornada não é armazenada em cache; cada chamada para o GetEnumerator método na coleção iniciará uma nova enumeração.
Aplica-se a
EnumerateDirectories(String, EnumerationOptions)
- Origem:
- DirectoryInfo.cs
- Origem:
- DirectoryInfo.cs
- Origem:
- DirectoryInfo.cs
Retorna uma coleção enumerável de informações de diretório que correspondem às opções especificadas de padrão de pesquisa e enumeração.
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)
Parâmetros
- searchPattern
- String
A cadeia de caracteres de pesquisa para correspondência em relação aos nomes dos diretórios. Esse parâmetro pode conter uma combinação de caracteres curinga (* e ?) e caminho de literal, mas não dá suporte a expressões regulares.
- enumerationOptions
- EnumerationOptions
Um objeto que descreve a configuração de pesquisa e enumeração a ser usada.
Retornos
Uma coleção enumerável de diretórios que corresponde a searchPattern
e enumerationOptions
.
Exceções
searchPattern
é null
.
O caminho encapsulado no objeto DirectoryInfo é inválido (por exemplo, está em uma unidade não mapeada).
O chamador não tem a permissão necessária.
Comentários
searchPattern
pode ser uma combinação de caracteres literais e curinga, mas não dá suporte a expressões regulares. Os especificadores curinga a seguir são permitidos em searchPattern
.
Especificador curinga | Corresponde a |
---|---|
* (asterisco) | Zero ou mais caracteres nessa posição. |
? (ponto de interrogação) | Zero ou um caractere nessa posição. |
Caracteres diferentes do curinga são caracteres literais. Por exemplo, a cadeia de caracteres "*t" pesquisa todos os nomes ao terminar com a letra "t". ". A searchPattern
cadeia de caracteres "s*" procura todos os nomes no path
início com a letra "s".
Os EnumerateDirectories métodos e GetDirectories diferem da seguinte maneira:
Ao usar EnumerateDirectories, você pode começar a enumerar a coleção de DirectoryInfo objetos antes que toda a coleção seja retornada.
Ao usar GetDirectories, você deve aguardar que toda a matriz de DirectoryInfo objetos seja retornada antes de poder acessar a matriz.
Portanto, quando você está trabalhando com muitos arquivos e diretórios, EnumerateDirectories pode ser mais eficiente.
Esse método preenche previamente os valores das seguintes DirectoryInfo propriedades:
A coleção retornada não é armazenada em cache; cada chamada para o GetEnumerator método na coleção iniciará uma nova enumeração.
Aplica-se a
EnumerateDirectories()
- Origem:
- DirectoryInfo.cs
- Origem:
- DirectoryInfo.cs
- Origem:
- DirectoryInfo.cs
Retorna uma coleção enumerável de informações de diretório no diretório atual.
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)
Retornos
Uma coleção enumerável de diretórios no diretório atual.
Exceções
O caminho encapsulado no objeto DirectoryInfo é inválido (por exemplo, está em uma unidade não mapeada).
O chamador não tem a permissão necessária.
Exemplos
O exemplo a seguir enumera os subdiretórios no diretório C:\Program Files e usa uma consulta LINQ para retornar os nomes de todos os diretórios criados antes de 2009 verificando o valor da CreationTimeUtc propriedade.
Se você precisar apenas dos nomes dos subdiretórios, use a classe estática Directory para melhorar o desempenho. Para obter um exemplo, consulte o EnumerateDirectories(String) método .
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
Comentários
Os EnumerateDirectories métodos e GetDirectories diferem da seguinte maneira:
Ao usar EnumerateDirectories, você pode começar a enumerar a coleção de DirectoryInfo objetos antes que toda a coleção seja retornada.
Ao usar GetDirectories, você deve aguardar que toda a matriz de DirectoryInfo objetos seja retornada antes de poder acessar a matriz.
Portanto, quando você está trabalhando com muitos arquivos e diretórios, EnumerateDirectories pode ser mais eficiente.
Esse método preenche previamente os valores das seguintes DirectoryInfo propriedades:
A coleção retornada não é armazenada em cache; cada chamada para o GetEnumerator método na coleção iniciará uma nova enumeração.
Aplica-se a
EnumerateDirectories(String)
- Origem:
- DirectoryInfo.cs
- Origem:
- DirectoryInfo.cs
- Origem:
- DirectoryInfo.cs
Retorna uma coleção enumerável de informações do diretório que correspondem a um padrão de pesquisa especificado.
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)
Parâmetros
- searchPattern
- String
A cadeia de caracteres de pesquisa para correspondência em relação aos nomes dos diretórios. Esse parâmetro pode conter uma combinação de caracteres curinga (* e ?) e caminho de literal, mas não dá suporte a expressões regulares.
Retornos
Uma coleção enumerável de diretórios que corresponde a searchPattern
.
Exceções
searchPattern
é null
.
O caminho encapsulado no objeto DirectoryInfo é inválido (por exemplo, está em uma unidade não mapeada).
O chamador não tem a permissão necessária.
Comentários
searchPattern
pode ser uma combinação de caracteres literais e curinga, mas não dá suporte a expressões regulares. Os especificadores curinga a seguir são permitidos em searchPattern
.
Especificador curinga | Corresponde a |
---|---|
* (asterisco) | Zero ou mais caracteres nessa posição. |
? (ponto de interrogação) | Zero ou um caractere nessa posição. |
Caracteres diferentes do curinga são caracteres literais. Por exemplo, a cadeia de caracteres "*t" pesquisa todos os nomes ao terminar com a letra "t". ". A searchPattern
cadeia de caracteres "s*" procura todos os nomes no path
início com a letra "s".
Os EnumerateDirectories métodos e GetDirectories diferem da seguinte maneira:
Ao usar EnumerateDirectories, você pode começar a enumerar a coleção de DirectoryInfo objetos antes que toda a coleção seja retornada.
Ao usar GetDirectories, você deve aguardar que toda a matriz de DirectoryInfo objetos seja retornada antes de poder acessar a matriz.
Portanto, quando você está trabalhando com muitos arquivos e diretórios, EnumerateDirectories pode ser mais eficiente.
Esse método preenche previamente os valores das seguintes DirectoryInfo propriedades:
A coleção retornada não é armazenada em cache; cada chamada para o GetEnumerator método na coleção iniciará uma nova enumeração.