Partilhar via


Directory.GetDirectories Método

Definição

Retorna os nomes de subdiretórios que atendem ao critério especificado.

Sobrecargas

GetDirectories(String, String, SearchOption)

Retorna os nomes dos subdiretórios (incluindo os caminhos) que correspondem ao padrão de pesquisa especificado no diretório especificado e, opcionalmente, subdiretórios de pesquisas.

GetDirectories(String, String, EnumerationOptions)

Retorna os nomes de subdiretórios (incluindo os caminhos) que correspondem às opções de enumeração e ao padrão de pesquisa especificados no diretório especificado.

GetDirectories(String, String)

Retorna os nomes de subdiretórios (incluindo os caminhos) que correspondem ao padrão de pesquisa especificado no diretório especificado.

GetDirectories(String)

Retorna os nomes de subdiretórios (inclusive os caminhos) no diretório especificado.

GetDirectories(String, String, SearchOption)

Origem:
Directory.cs
Origem:
Directory.cs
Origem:
Directory.cs

Retorna os nomes dos subdiretórios (incluindo os caminhos) que correspondem ao padrão de pesquisa especificado no diretório especificado e, opcionalmente, subdiretórios de pesquisas.

public:
 static cli::array <System::String ^> ^ GetDirectories(System::String ^ path, System::String ^ searchPattern, System::IO::SearchOption searchOption);
public static string[] GetDirectories (string path, string searchPattern, System.IO.SearchOption searchOption);
static member GetDirectories : string * string * System.IO.SearchOption -> string[]
Public Shared Function GetDirectories (path As String, searchPattern As String, searchOption As SearchOption) As String()

Parâmetros

path
String

O caminho relativo ou absoluto para o diretório a ser pesquisado. Esta cadeia de caracteres não diferencia maiúsculas de minúsculas.

searchPattern
String

A cadeia de caracteres de pesquisa para correspondência com os nomes dos subdiretórios em path. Esse parâmetro pode conter uma combinação de caracteres literais e curinga válidos, 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 todos os subdiretórios ou apenas o diretório atual.

Retornos

String[]

Uma matriz de nomes completos (incluindo caminhos) dos subdiretórios que correspondem aos critérios especificados, ou uma matriz vazia, se nenhum diretório for encontrado.

Exceções

.NET Framework e versões do .NET Core anteriores à 2.1: path é uma cadeia de caracteres de comprimento zero, contém apenas espaço em branco ou contém um ou mais caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars().

- ou -

searchPattern não contém um padrão válido.

path ou searchPattern é null.

searchOption não é um valor SearchOption válido.

O chamador não tem a permissão necessária.

O caminho especificado, o nome de arquivo, ou ambos excedem o tamanho máximo definido pelo sistema.

path é um nome de arquivo.

- ou -

O arquivo ou diretório está corrompido e ilegível (exemplo: primeira unidade de alocação inválida de uma partição FAT32).

O caminho especificado é inválido (por exemplo, ele está em uma unidade não mapeada).

Exemplos

O exemplo a seguir conta o número de diretórios que começam com a letra especificada em um caminho. Somente o diretório de nível superior é pesquisado.

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            string[] dirs = Directory.GetDirectories(@"c:\", "p*", SearchOption.TopDirectoryOnly);
            Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length);
            foreach (string dir in dirs)
            {
                Console.WriteLine(dir);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}
open System.IO

try
    let dirs = Directory.GetDirectories(@"c:\", "p*", SearchOption.TopDirectoryOnly)
    printfn $"The number of directories starting with p is {dirs.Length}."
    for dir in dirs do
        printfn $"{dir}"
with e ->
    printfn $"The process failed: {e}"
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Try
            Dim dirs As String() = Directory.GetDirectories("c:\", "p*", SearchOption.TopDirectoryOnly)
            Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length)
            Dim dir As String
            For Each dir In dirs
                Console.WriteLine(dir)
            Next
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

Comentários

O path parâmetro pode especificar informações de caminho relativas ou absolutas e não diferencia maiúsculas de minúsculas. As informações do caminho relativo são interpretadas como relativas ao diretório de trabalho atual. Para obter o diretório de trabalho atual, consulte GetCurrentDirectory.

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) Exatamente um caractere nessa posição.

Caracteres diferentes do curinga são caracteres literais. Por exemplo, a cadeia searchPattern de caracteres "*t" pesquisa todos os nomes ao path terminar com a letra "t". A searchPattern cadeia de caracteres "s*" procura todos os nomes no path início com a letra "s".

searchPattern não pode terminar em dois períodos ("..") ou conter dois períodos ("..") seguidos por DirectorySeparatorChar ou AltDirectorySeparatorChar, nem pode conter caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars.

Os EnumerateDirectories métodos e GetDirectories diferem da seguinte maneira: quando você usa EnumerateDirectories, você pode começar a enumerar a coleção de nomes antes que toda a coleção seja retornada; quando você usa GetDirectories, deve aguardar que toda a matriz de nomes seja retornada antes de poder acessar a matriz. Portanto, quando você está trabalhando com muitos arquivos e diretórios, EnumerateDirectories pode ser mais eficiente.

Para obter uma lista de tarefas comuns de E/S, consulte Tarefas comuns de E/S.

Confira também

Aplica-se a

GetDirectories(String, String, EnumerationOptions)

Origem:
Directory.cs
Origem:
Directory.cs
Origem:
Directory.cs

Retorna os nomes de subdiretórios (incluindo os caminhos) que correspondem às opções de enumeração e ao padrão de pesquisa especificados no diretório especificado.

public:
 static cli::array <System::String ^> ^ GetDirectories(System::String ^ path, System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public static string[] GetDirectories (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
static member GetDirectories : string * string * System.IO.EnumerationOptions -> string[]
Public Shared Function GetDirectories (path As String, searchPattern As String, enumerationOptions As EnumerationOptions) As String()

Parâmetros

path
String

O caminho relativo ou absoluto para o diretório a ser pesquisado. Esta cadeia de caracteres não diferencia maiúsculas de minúsculas.

searchPattern
String

A cadeia de caracteres de pesquisa para correspondência com os nomes dos subdiretórios em path. Esse parâmetro pode conter uma combinação de caracteres literais e curinga válidos, 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

String[]

Uma matriz de nomes completos (incluindo caminhos) dos subdiretórios que correspondem ao padrão de pesquisa e às opções de enumeração no diretório especificado ou uma matriz vazia, se nenhum diretório foi encontrado.

Exceções

O chamador não tem a permissão necessária.

.NET Framework e versões do .NET Core anteriores à 2.1: path é uma cadeia de caracteres de comprimento zero, contém apenas espaço em branco ou contém um ou mais caracteres inválidos. É possível consultar caracteres inválidos usando GetInvalidPathChars().

- ou -

searchPattern não contém um padrão válido.

path ou searchPattern é null.

O caminho especificado, o nome de arquivo, ou ambos excedem o tamanho máximo definido pelo sistema.

path é um nome de arquivo.

- ou -

O arquivo ou diretório está corrompido e ilegível (exemplo: primeira unidade de alocação inválida de uma partição FAT32).

O caminho especificado é inválido (por exemplo, ele está em uma unidade não mapeada).

Comentários

Esse método retorna todos os subdiretórios diretamente no diretório especificado que correspondem ao padrão de pesquisa especificado. Se o diretório especificado não tiver subdiretórios ou nenhum subdiretório corresponder ao searchPattern parâmetro , esse método retornará uma matriz vazia. Somente o diretório superior é pesquisado. Se você também quiser pesquisar os subdiretórios, use o GetDirectories(String, String, SearchOption) método e especifique AllDirectories no searchOption parâmetro .

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) Exatamente um caractere nessa posição.

Caracteres diferentes do curinga são caracteres literais. Por exemplo, a cadeia searchPattern de caracteres "*t" pesquisa todos os nomes ao path terminar com a letra "t". A searchPattern cadeia de caracteres "s*" procura todos os nomes no path início com a letra "s".

searchPattern não pode terminar em dois períodos ("..") ou conter dois períodos ("..") seguidos por DirectorySeparatorChar ou AltDirectorySeparatorChar, nem pode conter caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars.

O path parâmetro pode especificar informações de caminho relativas ou absolutas e não diferencia maiúsculas de minúsculas. As informações do caminho relativo são interpretadas como relativas ao diretório de trabalho atual. Para obter o diretório de trabalho atual, consulte GetCurrentDirectory.

Os EnumerateDirectories métodos e GetDirectories diferem da seguinte maneira: quando você usa EnumerateDirectories, você pode começar a enumerar a coleção de nomes antes que toda a coleção seja retornada; quando você usa GetDirectories, deve aguardar que toda a matriz de nomes seja retornada antes de poder acessar a matriz. Portanto, quando você está trabalhando com muitos arquivos e diretórios, EnumerateDirectories pode ser mais eficiente.

Para obter uma lista de tarefas comuns de E/S, consulte Tarefas comuns de E/S.

Aplica-se a

GetDirectories(String, String)

Origem:
Directory.cs
Origem:
Directory.cs
Origem:
Directory.cs

Retorna os nomes de subdiretórios (incluindo os caminhos) que correspondem ao padrão de pesquisa especificado no diretório especificado.

public:
 static cli::array <System::String ^> ^ GetDirectories(System::String ^ path, System::String ^ searchPattern);
public static string[] GetDirectories (string path, string searchPattern);
static member GetDirectories : string * string -> string[]
Public Shared Function GetDirectories (path As String, searchPattern As String) As String()

Parâmetros

path
String

O caminho relativo ou absoluto para o diretório a ser pesquisado. Esta cadeia de caracteres não diferencia maiúsculas de minúsculas.

searchPattern
String

A cadeia de caracteres de pesquisa para correspondência com os nomes dos subdiretórios em path. Esse parâmetro pode conter uma combinação de caracteres literais e curinga válidos, mas não dá suporte a expressões regulares.

Retornos

String[]

Uma matriz de nomes completos (incluindo caminhos) dos subdiretórios que correspondem ao padrão de pesquisa no diretório especificado, ou uma matriz vazia, se nenhum diretório for encontrado.

Exceções

O chamador não tem a permissão necessária.

.NET Framework e versões do .NET Core anteriores à 2.1: path é uma cadeia de caracteres de comprimento zero, contém apenas espaço em branco ou contém um ou mais caracteres inválidos. É possível consultar caracteres inválidos usando GetInvalidPathChars().

- ou -

searchPattern não contém um padrão válido.

path ou searchPattern é null.

O caminho especificado, o nome de arquivo, ou ambos excedem o tamanho máximo definido pelo sistema.

path é um nome de arquivo.

- ou -

O arquivo ou diretório está corrompido e ilegível (exemplo: primeira unidade de alocação inválida de uma partição FAT32).

O caminho especificado é inválido (por exemplo, ele está em uma unidade não mapeada).

Exemplos

O exemplo a seguir conta o número de diretórios em um caminho que começa com a letra especificada.

using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      
      // Only get subdirectories that begin with the letter "p."
      array<String^>^dirs = Directory::GetDirectories( "c:\\", "p*" );
      Console::WriteLine( "The number of directories starting with p is {0}.", dirs->Length );
      Collections::IEnumerator^ myEnum = dirs->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         Console::WriteLine( myEnum->Current );
      }
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            // Only get subdirectories that begin with the letter "p."
            string[] dirs = Directory.GetDirectories(@"c:\", "p*");
            Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length);
            foreach (string dir in dirs)
            {
                Console.WriteLine(dir);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}
open System.IO

try
    // Only get subdirectories that begin with the letter "p."
    let dirs = Directory.GetDirectories(@"c:\", "p*")
    printfn $"The number of directories starting with p is {dirs.Length}."
    for dir in dirs do
        printfn $"{dir}"
with e ->
    printfn $"The process failed: {e}"
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Try
            ' Only get subdirectories that begin with the letter "p."
            Dim dirs As String() = Directory.GetDirectories("c:\", "p*")
            Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length)
            Dim dir As String
            For Each dir In dirs
                Console.WriteLine(dir)
            Next
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

Comentários

Esse método retorna todos os subdiretórios diretamente no diretório especificado que correspondem ao padrão de pesquisa especificado. Se o diretório especificado não tiver subdiretórios ou nenhum subdiretório corresponder ao searchPattern parâmetro , esse método retornará uma matriz vazia. Somente o diretório superior é pesquisado. Se você também quiser pesquisar os subdiretórios, use o GetDirectories(String, String, SearchOption) método e especifique AllDirectories no searchOption parâmetro .

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) Exatamente um caractere nessa posição.

Caracteres diferentes do curinga são caracteres literais. Por exemplo, a cadeia searchPattern de caracteres "*t" pesquisa todos os nomes ao path terminar com a letra "t". A searchPattern cadeia de caracteres "s*" procura todos os nomes no path início com a letra "s".

searchPattern não pode terminar em dois períodos ("..") ou conter dois períodos ("..") seguidos por DirectorySeparatorChar ou AltDirectorySeparatorChar, nem pode conter caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars.

O path parâmetro pode especificar informações de caminho relativas ou absolutas e não diferencia maiúsculas de minúsculas. As informações do caminho relativo são interpretadas como relativas ao diretório de trabalho atual. Para obter o diretório de trabalho atual, consulte GetCurrentDirectory.

Os EnumerateDirectories métodos e GetDirectories diferem da seguinte maneira: quando você usa EnumerateDirectories, você pode começar a enumerar a coleção de nomes antes que toda a coleção seja retornada; quando você usa GetDirectories, deve aguardar que toda a matriz de nomes seja retornada antes de poder acessar a matriz. Portanto, quando você está trabalhando com muitos arquivos e diretórios, EnumerateDirectories pode ser mais eficiente.

Para obter uma lista de tarefas comuns de E/S, consulte Tarefas comuns de E/S.

Confira também

Aplica-se a

GetDirectories(String)

Origem:
Directory.cs
Origem:
Directory.cs
Origem:
Directory.cs

Retorna os nomes de subdiretórios (inclusive os caminhos) no diretório especificado.

public:
 static cli::array <System::String ^> ^ GetDirectories(System::String ^ path);
public static string[] GetDirectories (string path);
static member GetDirectories : string -> string[]
Public Shared Function GetDirectories (path As String) As String()

Parâmetros

path
String

O caminho relativo ou absoluto para o diretório a ser pesquisado. Esta cadeia de caracteres não diferencia maiúsculas de minúsculas.

Retornos

String[]

Uma matriz de nomes completos (incluindo caminhos) dos subdiretórios no caminho especificado, ou uma matriz vazia, se nenhum diretório for encontrado.

Exceções

O chamador não tem a permissão necessária.

.NET Framework e versões do .NET Core anteriores à 2.1: path é uma cadeia de caracteres de comprimento zero, contém apenas espaço em branco ou contém um ou mais caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars().

path é null.

O caminho especificado, o nome de arquivo, ou ambos excedem o tamanho máximo definido pelo sistema.

path é um nome de arquivo.

- ou -

O arquivo ou diretório está corrompido e ilegível (exemplo: primeira unidade de alocação inválida de uma partição FAT32).

O caminho especificado é inválido (por exemplo, ele está em uma unidade não mapeada).

Exemplos

O exemplo a seguir usa uma matriz de nomes de arquivo ou diretório na linha de comando, determina que tipo de nome é e processa-o adequadamente.

// For Directory::GetFiles and Directory::GetDirectories
// For File::Exists, Directory::Exists
using namespace System;
using namespace System::IO;
using namespace System::Collections;

// Insert logic for processing found files here.
void ProcessFile( String^ path )
{
   Console::WriteLine( "Processed file '{0}'.", path );
}


// Process all files in the directory passed in, recurse on any directories 
// that are found, and process the files they contain.
void ProcessDirectory( String^ targetDirectory )
{
   
   // Process the list of files found in the directory.
   array<String^>^fileEntries = Directory::GetFiles( targetDirectory );
   IEnumerator^ files = fileEntries->GetEnumerator();
   while ( files->MoveNext() )
   {
      String^ fileName = safe_cast<String^>(files->Current);
      ProcessFile( fileName );
   }

   
   // Recurse into subdirectories of this directory.
   array<String^>^subdirectoryEntries = Directory::GetDirectories( targetDirectory );
   IEnumerator^ dirs = subdirectoryEntries->GetEnumerator();
   while ( dirs->MoveNext() )
   {
      String^ subdirectory = safe_cast<String^>(dirs->Current);
      ProcessDirectory( subdirectory );
   }
}

int main( int argc, char *argv[] )
{
   for ( int i = 1; i < argc; i++ )
   {
      String^ path = gcnew String(argv[ i ]);
      if ( File::Exists( path ) )
      {
         
         // This path is a file
         ProcessFile( path );
      }
      else
      if ( Directory::Exists( path ) )
      {
         
         // This path is a directory
         ProcessDirectory( path );
      }
      else
      {
         Console::WriteLine( "{0} is not a valid file or directory.", path );
      }

   }
}
// For Directory.GetFiles and Directory.GetDirectories
// For File.Exists, Directory.Exists
using System;
using System.IO;
using System.Collections;

public class RecursiveFileProcessor
{
    public static void Main(string[] args)
    {
        foreach(string path in args)
        {
            if(File.Exists(path))
            {
                // This path is a file
                ProcessFile(path);
            }
            else if(Directory.Exists(path))
            {
                // This path is a directory
                ProcessDirectory(path);
            }
            else
            {
                Console.WriteLine("{0} is not a valid file or directory.", path);
            }
        }
    }

    // Process all files in the directory passed in, recurse on any directories
    // that are found, and process the files they contain.
    public static void ProcessDirectory(string targetDirectory)
    {
        // Process the list of files found in the directory.
        string [] fileEntries = Directory.GetFiles(targetDirectory);
        foreach(string fileName in fileEntries)
            ProcessFile(fileName);

        // Recurse into subdirectories of this directory.
        string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
        foreach(string subdirectory in subdirectoryEntries)
            ProcessDirectory(subdirectory);
    }

    // Insert logic for processing found files here.
    public static void ProcessFile(string path)
    {
        Console.WriteLine("Processed file '{0}'.", path);	
    }
}
module RecursiveFileProcessor

open System.IO

// Insert logic for processing found files here.
let processFile path =
    printfn $"Processed file '%s{path}'."

// Process all files in the directory passed in, recurse on any directories
// that are found, and process the files they contain.
let rec processDirectory targetDirectory =
    // Process the list of files found in the directory.
    let fileEntries = Directory.GetFiles targetDirectory
    for fileName in fileEntries do
        processFile fileName

    // Recurse into subdirectories of this directory.
    let subdirectoryEntries = Directory.GetDirectories targetDirectory
    for subdirectory in subdirectoryEntries do
        processDirectory subdirectory

[<EntryPoint>]
let main args =
    for path in args do
        if File.Exists path then
            // This path is a file
            processFile path
        elif Directory.Exists path then
            // This path is a directory
            processDirectory path
        else
            printfn $"{path} is not a valid file or directory."
    0
' For Directory.GetFiles and Directory.GetDirectories
' For File.Exists, Directory.Exists 

Imports System.IO
Imports System.Collections

Public Class RecursiveFileProcessor

    Public Overloads Shared Sub Main(ByVal args() As String)
        Dim path As String
        For Each path In args
            If File.Exists(path) Then
                ' This path is a file.
                ProcessFile(path)
            Else
                If Directory.Exists(path) Then
                    ' This path is a directory.
                    ProcessDirectory(path)
                Else
                    Console.WriteLine("{0} is not a valid file or directory.", path)
                End If
            End If
        Next path
    End Sub


    ' Process all files in the directory passed in, recurse on any directories 
    ' that are found, and process the files they contain.
    Public Shared Sub ProcessDirectory(ByVal targetDirectory As String)
        Dim fileEntries As String() = Directory.GetFiles(targetDirectory)
        ' Process the list of files found in the directory.
        Dim fileName As String
        For Each fileName In fileEntries
            ProcessFile(fileName)

        Next fileName
        Dim subdirectoryEntries As String() = Directory.GetDirectories(targetDirectory)
        ' Recurse into subdirectories of this directory.
        Dim subdirectory As String
        For Each subdirectory In subdirectoryEntries
            ProcessDirectory(subdirectory)
        Next subdirectory

    End Sub

    ' Insert logic for processing found files here.
    Public Shared Sub ProcessFile(ByVal path As String)
        Console.WriteLine("Processed file '{0}'.", path)
    End Sub
End Class

Comentários

Esse método é idêntico ao GetDirectories(String, String) com o asterisco (*) especificado como o padrão de pesquisa, portanto, retorna todos os subdiretórios. Se você precisar pesquisar subdiretórios, use o GetDirectories(String, String, SearchOption) método , que permite especificar uma pesquisa de subdiretórios com o searchOption parâmetro .

Os EnumerateDirectories métodos e GetDirectories diferem da seguinte maneira: quando você usa EnumerateDirectories, você pode começar a enumerar a coleção de nomes antes que toda a coleção seja retornada; quando você usa GetDirectories, deve aguardar que toda a matriz de nomes seja retornada antes de poder acessar a matriz. Portanto, quando você está trabalhando com muitos arquivos e diretórios, EnumerateDirectories pode ser mais eficiente.

O path parâmetro pode especificar informações de caminho relativas ou absolutas. As informações do caminho relativo são interpretadas como relativas ao diretório de trabalho atual. Para obter o diretório de trabalho atual, consulte GetCurrentDirectory.

Os nomes retornados por esse método são prefixados com as informações de diretório fornecidas em path.

A diferenciação de maiúsculas e minúsculas do path parâmetro corresponde à do sistema de arquivos no qual o código está em execução. Por exemplo, não diferencia maiúsculas de minúsculas no NTFS (o sistema de arquivos padrão do Windows) e diferencia maiúsculas de minúsculas em sistemas de arquivos Linux.

Para obter uma lista de tarefas comuns de E/S, consulte Tarefas comuns de E/S.

Confira também

Aplica-se a