Directory.GetDirectories Método

Definição

Devolve os nomes dos subdiretórios que cumprem critérios especificados.

Sobrecargas

Name Description
GetDirectories(String, String, SearchOption)

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

GetDirectories(String, String, EnumerationOptions)

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

GetDirectories(String)

Devolve os nomes dos subdiretórios (incluindo os seus caminhos) no diretório especificado.

GetDirectories(String, String)

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

GetDirectories(String, String, SearchOption)

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

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 pesquisar. Esta cadeia não é sensível a maiúsculas minúsculas.

searchPattern
String

A cadeia de pesquisa para comparar com os nomes dos subdiretórios em path. Este parâmetro pode conter uma combinação de caracteres literais e coringa válidos, mas não suporta expressões regulares.

searchOption
SearchOption

Um dos valores de enumeração especifica se a operação de pesquisa deve incluir todos os subdiretórios ou apenas o diretório atual.

Devoluções

String[]

Um array com os nomes completos (incluindo caminhos) dos subdiretórios que correspondam aos critérios especificados, ou um array vazio se não forem encontrados diretórios.

Exceções

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

-ou-

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

path ou searchPattern é null.

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

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

O caminho especificado, nome do ficheiro ou ambos excedem o comprimento máximo definido pelo sistema.

path é um nome de ficheiro.

-ou-

O ficheiro 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, está num disco não mapeado).

Exemplos

O exemplo seguinte conta o número de diretórios que começam com a letra especificada num caminho. Apenas o diretório de topo é 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

Observações

O path parâmetro pode especificar informação relativa ou absoluta do caminho, e não é sensível a maiúsculas e minúsculas. A informação relativa do caminho é interpretada como relativa ao diretório de trabalho atual. Para obter o diretório de trabalho atual, veja GetCurrentDirectory.

searchPattern pode ser uma combinação de caracteres literais e coringa, mas não suporta expressões regulares. Os seguintes indicadores de wildcard são permitidos em searchPattern.

Especificador de coringa Resultados correspondentes
* (asterisco) Zero ou mais personagens nessa posição.
? (ponto de interrogação) Exatamente uma personagem nessa posição.

Personagens que não sejam o coringa são personagens literais. Por exemplo, a searchPattern cadeia "*t" procura todos os nomes que path terminam com a letra "t". A searchPattern cadeia "s*" procura todos os nomes começando path pela letra "s".

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

Os EnumerateDirectories métodos e GetDirectories diferem da seguinte forma: Quando usa EnumerateDirectories, pode começar a enumerar a coleção de nomes antes de a coleção completa ser devolvida; quando usar GetDirectories, deve esperar que todo o array de nomes seja devolvido antes de poder aceder ao array. Por isso, quando trabalha com muitos ficheiros e diretórios, EnumerateDirectories pode ser mais eficiente.

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

Ver também

Aplica-se a

GetDirectories(String, String, EnumerationOptions)

Devolve os nomes dos subdiretórios (incluindo os seus caminhos) que correspondem ao padrão de pesquisa especificado e às opções de enumeração 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 pesquisar. Esta cadeia não é sensível a maiúsculas minúsculas.

searchPattern
String

A cadeia de pesquisa para comparar com os nomes dos subdiretórios em path. Este parâmetro pode conter uma combinação de caracteres literais e coringa válidos, mas não suporta expressões regulares.

enumerationOptions
EnumerationOptions

Um objeto que descreve a configuração de pesquisa e enumeração a utilizar.

Devoluções

String[]

Um array com os nomes completos (incluindo caminhos) dos subdiretórios que correspondam ao padrão de pesquisa e às opções de enumeração no diretório especificado, ou um array vazio se não forem encontrados diretórios.

Exceções

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

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

-ou-

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

path ou searchPattern é null.

O caminho especificado, nome do ficheiro ou ambos excedem o comprimento máximo definido pelo sistema.

path é um nome de ficheiro.

-ou-

O ficheiro 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, está num disco não mapeado).

Observações

Este método devolve todos os subdiretórios diretamente sob o diretório especificado que correspondam ao padrão de pesquisa especificado. Se o diretório especificado não tiver subdiretórios, ou se nenhum subdiretório corresponder ao searchPattern parâmetro, este método devolve um array vazio. Apenas o diretório superior é pesquisado. Se quiseres pesquisar também nos subdiretórios, usa o GetDirectories(String, String, SearchOption) método e especifica AllDirectories no searchOption parâmetro.

searchPattern pode ser uma combinação de caracteres literais e coringa, mas não suporta expressões regulares. Os seguintes indicadores de wildcard são permitidos em searchPattern.

Especificador de coringa Resultados correspondentes
* (asterisco) Zero ou mais personagens nessa posição.
? (ponto de interrogação) Exatamente uma personagem nessa posição.

Personagens que não sejam o coringa são personagens literais. Por exemplo, a searchPattern cadeia "*t" procura todos os nomes que path terminam com a letra "t". A searchPattern cadeia "s*" procura todos os nomes começando path pela letra "s".

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

O path parâmetro pode especificar informação relativa ou absoluta do caminho, e não é sensível a maiúsculas e minúsculas. A informação relativa do caminho é interpretada como relativa ao diretório de trabalho atual. Para obter o diretório de trabalho atual, veja GetCurrentDirectory.

Os EnumerateDirectories métodos e GetDirectories diferem da seguinte forma: Quando usa EnumerateDirectories, pode começar a enumerar a coleção de nomes antes de a coleção completa ser devolvida; quando usar GetDirectories, deve esperar que todo o array de nomes seja devolvido antes de poder aceder ao array. Por isso, quando trabalha com muitos ficheiros e diretórios, EnumerateDirectories pode ser mais eficiente.

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

Aplica-se a

GetDirectories(String)

Devolve os nomes dos subdiretórios (incluindo os seus 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 pesquisar. Esta cadeia não é sensível a maiúsculas minúsculas.

Devoluções

String[]

Um array com os nomes completos (incluindo caminhos) dos subdiretórios no caminho especificado, ou um array vazio se não forem encontrados diretórios.

Exceções

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

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

path é null.

O caminho especificado, nome do ficheiro ou ambos excedem o comprimento máximo definido pelo sistema.

path é um nome de ficheiro.

-ou-

O ficheiro 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, está num disco não mapeado).

Exemplos

O exemplo seguinte pega num array de nomes de ficheiros ou diretórios na linha de comandos, determina que tipo de nome é e processa-o adequadamente.

// 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

Observações

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

Os EnumerateDirectories métodos e GetDirectories diferem da seguinte forma: Quando usa EnumerateDirectories, pode começar a enumerar a coleção de nomes antes de a coleção completa ser devolvida; quando usar GetDirectories, deve esperar que todo o array de nomes seja devolvido antes de poder aceder ao array. Por isso, quando trabalha com muitos ficheiros e diretórios, EnumerateDirectories pode ser mais eficiente.

O path parâmetro pode especificar informação relativa ou absoluta do caminho. A informação relativa do caminho é interpretada como relativa ao diretório de trabalho atual. Para obter o diretório de trabalho atual, veja GetCurrentDirectory.

Os nomes devolvidos por este método são precedidos pela informação do diretório fornecida em path.

A sensibilidade a maiúsculas e minúsculas do path parâmetro corresponde à do sistema de ficheiros onde o código está a correr. Por exemplo, é insensível a maiúsculas minúsculas no NTFS (o sistema de ficheiros padrão do Windows) e sensível a maiúsculas minúsculas em sistemas de ficheiros Linux.

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

Ver também

Aplica-se a

GetDirectories(String, String)

Devolve os nomes dos subdiretórios (incluindo os seus 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 pesquisar. Esta cadeia não é sensível a maiúsculas minúsculas.

searchPattern
String

A cadeia de pesquisa para comparar com os nomes dos subdiretórios em path. Este parâmetro pode conter uma combinação de caracteres literais e coringa válidos, mas não suporta expressões regulares.

Devoluções

String[]

Um array com os nomes completos (incluindo caminhos) dos subdiretórios que correspondam ao padrão de pesquisa no diretório especificado, ou um array vazio se não forem encontrados diretórios.

Exceções

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

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

-ou-

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

path ou searchPattern é null.

O caminho especificado, nome do ficheiro ou ambos excedem o comprimento máximo definido pelo sistema.

path é um nome de ficheiro.

-ou-

O ficheiro 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, está num disco não mapeado).

Exemplos

O exemplo seguinte conta o número de diretórios num caminho que começam com a letra especificada.

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

Observações

Este método devolve todos os subdiretórios diretamente sob o diretório especificado que correspondam ao padrão de pesquisa especificado. Se o diretório especificado não tiver subdiretórios, ou se nenhum subdiretório corresponder ao searchPattern parâmetro, este método devolve um array vazio. Apenas o diretório superior é pesquisado. Se quiseres pesquisar também nos subdiretórios, usa o GetDirectories(String, String, SearchOption) método e especifica AllDirectories no searchOption parâmetro.

searchPattern pode ser uma combinação de caracteres literais e coringa, mas não suporta expressões regulares. Os seguintes indicadores de wildcard são permitidos em searchPattern.

Especificador de coringa Resultados correspondentes
* (asterisco) Zero ou mais personagens nessa posição.
? (ponto de interrogação) Exatamente uma personagem nessa posição.

Personagens que não sejam o coringa são personagens literais. Por exemplo, a searchPattern cadeia "*t" procura todos os nomes que path terminam com a letra "t". A searchPattern cadeia "s*" procura todos os nomes começando path pela letra "s".

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

O path parâmetro pode especificar informação relativa ou absoluta do caminho, e não é sensível a maiúsculas e minúsculas. A informação relativa do caminho é interpretada como relativa ao diretório de trabalho atual. Para obter o diretório de trabalho atual, veja GetCurrentDirectory.

Os EnumerateDirectories métodos e GetDirectories diferem da seguinte forma: Quando usa EnumerateDirectories, pode começar a enumerar a coleção de nomes antes de a coleção completa ser devolvida; quando usar GetDirectories, deve esperar que todo o array de nomes seja devolvido antes de poder aceder ao array. Por isso, quando trabalha com muitos ficheiros e diretórios, EnumerateDirectories pode ser mais eficiente.

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

Ver também

Aplica-se a