Directory.GetDirectories Método

Definición

Devuelve los nombres de los subdirectorios que cumplen los criterios especificados.

Sobrecargas

GetDirectories(String, String, SearchOption)

Devuelve los nombres de los subdirectorios (incluidas las rutas de acceso) que coinciden con el patrón de búsqueda especificado en el directorio especificado y, opcionalmente, busca en subdirectorios.

GetDirectories(String, String, EnumerationOptions)

Devuelve los nombres de los subdirectorios (con sus rutas de acceso) que coinciden con el patrón de búsqueda y las opciones de enumeración especificados en el directorio especificado.

GetDirectories(String, String)

Devuelve los nombres de los subdirectorios (con sus rutas de acceso) que coinciden con el patrón de búsqueda especificado en el directorio especificado.

GetDirectories(String)

Devuelve los nombres de los subdirectorios (con sus rutas de acceso) del directorio especificado.

GetDirectories(String, String, SearchOption)

Source:
Directory.cs
Source:
Directory.cs
Source:
Directory.cs

Devuelve los nombres de los subdirectorios (incluidas las rutas de acceso) que coinciden con el patrón de búsqueda especificado en el directorio especificado y, opcionalmente, busca en subdirectorios.

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

La ruta de acceso absoluta o relativa al directorio que se va a buscar. Esta cadena no distingue entre mayúsculas y minúsculas.

searchPattern
String

Cadena de búsqueda que debe coincidir con los nombres de los subdirectorios de path. Este parámetro puede contener una combinación de literales válidos y caracteres comodín, pero no admite expresiones regulares.

searchOption
SearchOption

Uno de los valores de enumeración que especifica si la operación de búsqueda debe incluir todos los subdirectorios o solo el directorio actual.

Devoluciones

String[]

Una matriz de los nombres completos (con sus rutas de acceso) de los subdirectorios que coinciden con los criterios especificados, o una matriz vacía si no se encuentran directorios.

Excepciones

Versiones de .NET Framework y .NET Core anteriores a 2.1: path es una cadena de longitud cero, solo contiene espacios en blanco o contiene uno o varios caracteres no válidos. Puede consultar los caracteres no válidos con el método GetInvalidPathChars().

O bien

searchPattern no contiene un patrón válido.

path o searchPattern es null.

searchOption no es un valor SearchOption válido.

El llamador no dispone del permiso requerido.

La ruta de acceso especificada, el nombre de archivo o ambos superan la longitud máxima definida por el sistema.

path es un nombre del archivo.

O bien

El archivo o el directorio están dañados e ilegibles (ejemplo: primera unidad de asignación no válida de una partición FAT32).

La ruta de acceso especificada no es válida (por ejemplo, está en una unidad no asignada).

Ejemplos

En el ejemplo siguiente se cuenta el número de directorios que comienzan con la letra especificada en una ruta de acceso. Solo se busca en el directorio de nivel superior.

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

Comentarios

El path parámetro puede especificar información de ruta de acceso relativa o absoluta y no distingue mayúsculas de minúsculas. La información de ruta de acceso relativa se interpreta como relativa al directorio de trabajo actual. Para obtener el directorio de trabajo actual, consulte GetCurrentDirectory.

searchPattern puede ser una combinación de caracteres literales y comodín, pero no admite expresiones regulares. Los siguientes especificadores de caracteres comodín se permiten en searchPattern.

Especificador de caracteres comodín Coincide
* (asterisco) Cero o más caracteres en esa posición.
? (signo de interrogación) Exactamente un carácter en esa posición.

Los caracteres distintos del carácter comodín son caracteres literales. Por ejemplo, la searchPattern cadena "*t" busca todos los nombres al path terminar con la letra "t". La searchPattern cadena "s*" busca todos los nombres a path partir de la letra "s".

searchPattern no puede terminar en dos puntos ("..") ni contener dos puntos ("..") seguidos de DirectorySeparatorChar o AltDirectorySeparatorChar, ni puede contener caracteres no válidos. Puede consultar los caracteres no válidos con el método GetInvalidPathChars.

Los EnumerateDirectories métodos y GetDirectories difieren de la siguiente manera: cuando se usa EnumerateDirectories, puede empezar a enumerar la colección de nombres antes de que se devuelva toda la colección; cuando se usa GetDirectories, debe esperar a que se devuelva toda la matriz de nombres antes de poder acceder a la matriz. Por lo tanto, cuando se trabaja con muchos archivos y directorios, EnumerateDirectories puede ser más eficaz.

Para obtener una lista de tareas de E/S comunes, consulte Tareas de E/S comunes.

Consulte también

Se aplica a

GetDirectories(String, String, EnumerationOptions)

Source:
Directory.cs
Source:
Directory.cs
Source:
Directory.cs

Devuelve los nombres de los subdirectorios (con sus rutas de acceso) que coinciden con el patrón de búsqueda y las opciones de enumeración especificados en el directorio 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

La ruta de acceso absoluta o relativa al directorio que se va a buscar. Esta cadena no distingue entre mayúsculas y minúsculas.

searchPattern
String

Cadena de búsqueda que debe coincidir con los nombres de los subdirectorios de path. Este parámetro puede contener una combinación de literales válidos y caracteres comodín, pero no admite expresiones regulares.

enumerationOptions
EnumerationOptions

Un objeto que describe la configuración de búsqueda y enumeración que se va a usar.

Devoluciones

String[]

Una matriz de los nombres completos (con sus rutas de acceso) de los subdirectorios que coinciden con el patrón de búsqueda y las opciones de enumeración en el directorio especificado, o bien una matriz vacía si no se encuentran directorios.

Excepciones

El llamador no dispone del permiso requerido.

Versiones de .NET Framework y .NET Core anteriores a 2.1: path es una cadena de longitud cero, solo contiene espacios en blanco o contiene uno o varios caracteres no válidos. Puede consultar los caracteres no válidos usando GetInvalidPathChars().

O bien

searchPattern no contiene un patrón válido.

path o searchPattern es null.

La ruta de acceso especificada, el nombre de archivo o ambos superan la longitud máxima definida por el sistema.

path es un nombre del archivo.

O bien

El archivo o el directorio están dañados e ilegibles (ejemplo: primera unidad de asignación no válida de una partición FAT32).

La ruta de acceso especificada no es válida (por ejemplo, está en una unidad no asignada).

Comentarios

Este método devuelve todos los subdirectorios directamente debajo del directorio especificado que coinciden con el patrón de búsqueda especificado. Si el directorio especificado no tiene subdirectorios o ningún subdirectorio coincide con el searchPattern parámetro , este método devuelve una matriz vacía. Solo se busca en el directorio superior. Si desea buscar también en los subdirectorios, use el GetDirectories(String, String, SearchOption) método y especifique AllDirectories en el searchOption parámetro .

searchPattern puede ser una combinación de caracteres literales y comodín, pero no admite expresiones regulares. Los siguientes especificadores de caracteres comodín se permiten en searchPattern.

Especificador de caracteres comodín Coincide
* (asterisco) Cero o más caracteres en esa posición.
? (signo de interrogación) Exactamente un carácter en esa posición.

Los caracteres distintos del carácter comodín son caracteres literales. Por ejemplo, la searchPattern cadena "*t" busca todos los nombres al path terminar con la letra "t". La searchPattern cadena "s*" busca todos los nombres a path partir de la letra "s".

searchPattern no puede terminar en dos puntos ("..") ni contener dos puntos ("..") seguidos de DirectorySeparatorChar o AltDirectorySeparatorChar, ni puede contener caracteres no válidos. Puede consultar los caracteres no válidos con el método GetInvalidPathChars.

El path parámetro puede especificar información de ruta de acceso relativa o absoluta y no distingue mayúsculas de minúsculas. La información de ruta de acceso relativa se interpreta como relativa al directorio de trabajo actual. Para obtener el directorio de trabajo actual, consulte GetCurrentDirectory.

Los EnumerateDirectories métodos y GetDirectories difieren de la siguiente manera: cuando se usa EnumerateDirectories, puede empezar a enumerar la colección de nombres antes de que se devuelva toda la colección; cuando se usa GetDirectories, debe esperar a que se devuelva toda la matriz de nombres antes de poder acceder a la matriz. Por lo tanto, cuando se trabaja con muchos archivos y directorios, EnumerateDirectories puede ser más eficaz.

Para obtener una lista de tareas de E/S comunes, consulte Tareas de E/S comunes.

Se aplica a

GetDirectories(String, String)

Source:
Directory.cs
Source:
Directory.cs
Source:
Directory.cs

Devuelve los nombres de los subdirectorios (con sus rutas de acceso) que coinciden con el patrón de búsqueda especificado en el directorio 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

La ruta de acceso absoluta o relativa al directorio que se va a buscar. Esta cadena no distingue entre mayúsculas y minúsculas.

searchPattern
String

Cadena de búsqueda que debe coincidir con los nombres de los subdirectorios de path. Este parámetro puede contener una combinación de literales válidos y caracteres comodín, pero no admite expresiones regulares.

Devoluciones

String[]

Una matriz de los nombres completos (con sus rutas de acceso) de los subdirectorios que coinciden con el patrón de búsqueda en el directorio especificado, o una matriz vacía si no se encuentran directorios.

Excepciones

El llamador no dispone del permiso requerido.

Versiones de .NET Framework y .NET Core anteriores a 2.1: path es una cadena de longitud cero, solo contiene espacios en blanco o contiene uno o varios caracteres no válidos. Puede consultar los caracteres no válidos usando GetInvalidPathChars().

O bien

searchPattern no contiene un patrón válido.

path o searchPattern es null.

La ruta de acceso especificada, el nombre de archivo o ambos superan la longitud máxima definida por el sistema.

path es un nombre del archivo.

O bien

El archivo o el directorio están dañados e ilegibles (ejemplo: la primera unidad de asignación no válida de una partición FAT32).

La ruta de acceso especificada no es válida (por ejemplo, está en una unidad no asignada).

Ejemplos

En el ejemplo siguiente se cuenta el número de directorios de una ruta de acceso que comienza con la 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

Comentarios

Este método devuelve todos los subdirectorios directamente debajo del directorio especificado que coinciden con el patrón de búsqueda especificado. Si el directorio especificado no tiene subdirectorios o ningún subdirectorio coincide con el searchPattern parámetro , este método devuelve una matriz vacía. Solo se busca en el directorio superior. Si también desea buscar en los subdirectorios, use el GetDirectories(String, String, SearchOption) método y especifique AllDirectories en el searchOption parámetro .

searchPattern puede ser una combinación de caracteres literales y comodín, pero no admite expresiones regulares. Los siguientes especificadores de caracteres comodín se permiten en searchPattern.

Especificador de caracteres comodín Coincide
* (asterisco) Cero o más caracteres en esa posición.
? (signo de interrogación) Exactamente un carácter en esa posición.

Los caracteres distintos del carácter comodín son caracteres literales. Por ejemplo, la searchPattern cadena "*t" busca todos los nombres al path terminar con la letra "t". La searchPattern cadena "s*" busca todos los nombres path a partir de la letra "s".

searchPattern no puede terminar en dos puntos ("..") ni contener dos puntos ("..") seguidos de DirectorySeparatorChar o AltDirectorySeparatorChar, ni puede contener caracteres no válidos. Puede consultar los caracteres no válidos con el método GetInvalidPathChars.

El path parámetro puede especificar información de ruta de acceso relativa o absoluta y no distingue mayúsculas de minúsculas. La información de ruta de acceso relativa se interpreta como relativa al directorio de trabajo actual. Para obtener el directorio de trabajo actual, consulte GetCurrentDirectory.

Los EnumerateDirectories métodos y GetDirectories difieren de la siguiente manera: cuando se usa EnumerateDirectories, puede empezar a enumerar la colección de nombres antes de que se devuelva toda la colección; cuando se usa GetDirectories, debe esperar a que se devuelva toda la matriz de nombres para poder tener acceso a la matriz. Por lo tanto, cuando se trabaja con muchos archivos y directorios, EnumerateDirectories puede ser más eficaz.

Para obtener una lista de las tareas de E/S comunes, consulte Tareas de E/S comunes.

Consulte también

Se aplica a

GetDirectories(String)

Source:
Directory.cs
Source:
Directory.cs
Source:
Directory.cs

Devuelve los nombres de los subdirectorios (con sus rutas de acceso) del directorio 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

La ruta de acceso absoluta o relativa al directorio que se va a buscar. Esta cadena no distingue entre mayúsculas y minúsculas.

Devoluciones

String[]

Una matriz de los nombres completos (con sus rutas de acceso) de los subdirectorios de la ruta de acceso especificada, o una matriz vacía si no se encuentran directorios.

Excepciones

El llamador no dispone del permiso requerido.

Versiones de .NET Framework y .NET Core anteriores a 2.1: path es una cadena de longitud cero, contiene solo espacios en blanco o contiene uno o varios caracteres no válidos. Puede consultar los caracteres no válidos con el método GetInvalidPathChars().

path es null.

La ruta de acceso especificada, el nombre de archivo o ambos superan la longitud máxima definida por el sistema.

path es un nombre del archivo.

O bien

El archivo o el directorio están dañados e ilegibles (ejemplo: la primera unidad de asignación no válida de una partición FAT32).

La ruta de acceso especificada no es válida (por ejemplo, está en una unidad no asignada).

Ejemplos

En el ejemplo siguiente se toma una matriz de nombres de archivo o directorio en la línea de comandos, se determina el tipo de nombre que es y se procesa correctamente.

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

Comentarios

Este método es idéntico a con el asterisco GetDirectories(String, String) (*) especificado como patrón de búsqueda, por lo que devuelve todos los subdirectorios. Si necesita buscar subdirectorios, use el GetDirectories(String, String, SearchOption) método , que permite especificar una búsqueda de subdirectorios con el searchOption parámetro .

Los EnumerateDirectories métodos y GetDirectories difieren de la siguiente manera: cuando se usa EnumerateDirectories, puede empezar a enumerar la colección de nombres antes de que se devuelva toda la colección; cuando se usa GetDirectories, debe esperar a que se devuelva toda la matriz de nombres para poder tener acceso a la matriz. Por lo tanto, cuando se trabaja con muchos archivos y directorios, EnumerateDirectories puede ser más eficaz.

El path parámetro puede especificar información de ruta de acceso relativa o absoluta. La información de ruta de acceso relativa se interpreta como relativa al directorio de trabajo actual. Para obtener el directorio de trabajo actual, consulte GetCurrentDirectory.

Los nombres devueltos por este método tienen como prefijo la información de directorio proporcionada en path.

La distinción entre mayúsculas y minúsculas del path parámetro corresponde a la del sistema de archivos en el que se ejecuta el código. Por ejemplo, no distingue mayúsculas de minúsculas en NTFS (el sistema de archivos de Windows predeterminado) y distingue mayúsculas de minúsculas en sistemas de archivos Linux.

Para obtener una lista de las tareas de E/S comunes, consulte Tareas de E/S comunes.

Consulte también

Se aplica a