Share via


Directory.GetDirectories Metoda

Definice

Vrátí názvy podadresářů, které splňují zadaná kritéria.

Přetížení

GetDirectories(String, String, SearchOption)

Vrátí názvy podadresářů (včetně jejich cest), které odpovídají zadanému vzoru hledání v zadaném adresáři, a volitelně vyhledá podadresáře.

GetDirectories(String, String, EnumerationOptions)

Vrátí názvy podadresářů (včetně jejich cest), které odpovídají zadanému vzoru vyhledávání a možnostem výčtu v zadaném adresáři.

GetDirectories(String, String)

Vrátí názvy podadresářů (včetně jejich cest), které odpovídají zadanému vzoru hledání v zadaném adresáři.

GetDirectories(String)

Vrátí názvy podadresářů (včetně jejich cest) v zadaném adresáři.

GetDirectories(String, String, SearchOption)

Zdroj:
Directory.cs
Zdroj:
Directory.cs
Zdroj:
Directory.cs

Vrátí názvy podadresářů (včetně jejich cest), které odpovídají zadanému vzoru hledání v zadaném adresáři, a volitelně vyhledá podadresáře.

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()

Parametry

path
String

Relativní nebo absolutní cesta k adresáři, který chcete vyhledat. Tento řetězec neodlišuje velká a malá písmena.

searchPattern
String

Hledaný řetězec, který se má shodovat s názvy podadresářů v path. Tento parametr může obsahovat kombinaci platných literálů a zástupných znaků, ale nepodporuje regulární výrazy.

searchOption
SearchOption

Jedna z hodnot výčtu, která určuje, zda má operace hledání obsahovat všechny podadresáře nebo pouze aktuální adresář.

Návraty

String[]

Pole úplných názvů (včetně cest) podadresářů, které odpovídají zadaným kritériím, nebo prázdné pole, pokud nejsou nalezeny žádné adresáře.

Výjimky

.NET Framework a .NET Core verze starší než 2.1: path je řetězec nulové délky, obsahuje pouze prázdné znaky nebo obsahuje jeden nebo více neplatných znaků. Na neplatné znaky se můžete dotazovat pomocí metody .GetInvalidPathChars()

-nebo-

searchPattern neobsahuje platný vzor.

path nebo searchPattern je null.

searchOption není platná SearchOption hodnota.

Volající nemá požadované oprávnění.

Zadaná cesta, název souboru nebo obojí překračují maximální délku definovanou systémem.

path je název souboru.

-nebo-

Soubor nebo adresář je poškozený a nečitelný (příklad: neplatná první alokační jednotka oddílu FAT32).

Zadaná cesta je neplatná (například je na nenamapované jednotce).

Příklady

Následující příklad spočítá počet adresářů, které začínají zadaným písmenem v cestě. Prohledá se pouze adresář nejvyšší úrovně.

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

Poznámky

Parametr path může určovat relativní nebo absolutní informace o cestě a nerozlišuje malá a velká písmena. Informace o relativní cestě jsou vykládány jako relativní k aktuálnímu pracovnímu adresáři. Pokud chcete získat aktuální pracovní adresář, přečtěte si téma GetCurrentDirectory.

searchPattern může být kombinací literálů a zástupných znaků, ale nepodporuje regulární výrazy. V systému jsou povoleny následující specifikátory zástupných searchPatternznaků.

Specifikátor zástupných znaků Shody
* (hvězdička) Na této pozici není žádný nebo více znaků.
? (otazník) Přesně jeden znak na této pozici.

Jiné znaky než zástupný znak jsou literální znaky. Například searchPattern řetězec "*t" vyhledá všechna jména path končící písmenem "t". Řetězec searchPattern "s*" vyhledá všechna jména path začínající písmenem "s".

searchPattern nesmí končit dvěma tečkami (..) nebo obsahovat dvě tečky (..) následované tečkami DirectorySeparatorChar nebo AltDirectorySeparatorChara nesmí obsahovat žádné neplatné znaky. Na neplatné znaky se můžete dotazovat pomocí metody .GetInvalidPathChars

EnumerateDirectories Metody a GetDirectories se liší následujícím způsobem: Pokud použijete EnumerateDirectories, můžete začít s vytvářením výčtu kolekce názvů před vrácením celé kolekce; při použití GetDirectoriespříkazu musíte před přístupem k poli počkat na vrácení celého pole názvů. Proto, když pracujete s mnoha soubory a adresáři, EnumerateDirectories může být efektivnější.

Seznam běžných vstupně-výstupních úloh najdete v tématu Běžné vstupně-výstupní úlohy.

Viz také

Platí pro

GetDirectories(String, String, EnumerationOptions)

Zdroj:
Directory.cs
Zdroj:
Directory.cs
Zdroj:
Directory.cs

Vrátí názvy podadresářů (včetně jejich cest), které odpovídají zadanému vzoru vyhledávání a možnostem výčtu v zadaném adresáři.

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()

Parametry

path
String

Relativní nebo absolutní cesta k adresáři, který chcete vyhledat. Tento řetězec neodlišuje velká a malá písmena.

searchPattern
String

Hledaný řetězec, který se má shodovat s názvy podadresářů v path. Tento parametr může obsahovat kombinaci platných literálů a zástupných znaků, ale nepodporuje regulární výrazy.

enumerationOptions
EnumerationOptions

Objekt, který popisuje konfiguraci vyhledávání a výčtu, která se má použít.

Návraty

String[]

Pole úplných názvů (včetně cest) podadresářů, které odpovídají vzoru hledání a možnostem výčtu v zadaném adresáři, nebo prázdné pole, pokud nejsou nalezeny žádné adresáře.

Výjimky

Volající nemá požadované oprávnění.

.NET Framework a .NET Core verze starší než 2.1: path je řetězec nulové délky, obsahuje pouze prázdné znaky nebo obsahuje jeden nebo více neplatných znaků. Na neplatné znaky se můžete dotazovat pomocí příkazu GetInvalidPathChars().

-nebo-

searchPattern neobsahuje platný vzor.

path nebo searchPattern je null.

Zadaná cesta, název souboru nebo obojí překračují maximální délku definovanou systémem.

path je název souboru.

-nebo-

Soubor nebo adresář je poškozený a nečitelný (příklad: neplatná první alokační jednotka oddílu FAT32).

Zadaná cesta je neplatná (například je na nenamapované jednotce).

Poznámky

Tato metoda vrátí všechny podadresáře přímo v zadaném adresáři, který odpovídá zadanému vzoru vyhledávání. Pokud zadaný adresář nemá žádné podadresáře nebo žádné podadresáře neodpovídají parametru searchPattern , vrátí tato metoda prázdné pole. Prohledá se pouze adresář s nejvyššími místy. Pokud chcete prohledávat i podadresáře, použijte metodu GetDirectories(String, String, SearchOption) a v parametru searchOption zadejte AllDirectories .

searchPattern může být kombinací literálů a zástupných znaků, ale nepodporuje regulární výrazy. V systému jsou povoleny následující specifikátory zástupných searchPatternznaků.

Specifikátor zástupných znaků Shody
* (hvězdička) Na této pozici není žádný nebo více znaků.
? (otazník) Přesně jeden znak na této pozici.

Jiné znaky než zástupný znak jsou literální znaky. Například searchPattern řetězec "*t" vyhledá všechna jména path končící písmenem "t". Řetězec searchPattern "s*" vyhledá všechna jména path začínající písmenem "s".

searchPattern nesmí končit dvěma tečkami (..) nebo obsahovat dvě tečky (..) následované tečkami DirectorySeparatorChar nebo AltDirectorySeparatorChara nesmí obsahovat žádné neplatné znaky. Na neplatné znaky se můžete dotazovat pomocí metody .GetInvalidPathChars

Parametr path může určovat relativní nebo absolutní informace o cestě a nerozlišuje malá a velká písmena. Informace o relativní cestě jsou vykládány jako relativní k aktuálnímu pracovnímu adresáři. Pokud chcete získat aktuální pracovní adresář, přečtěte si téma GetCurrentDirectory.

EnumerateDirectories Metody a GetDirectories se liší následujícím způsobem: Pokud použijete EnumerateDirectories, můžete začít s vytvářením výčtu kolekce názvů před vrácením celé kolekce; při použití GetDirectoriespříkazu musíte před přístupem k poli počkat na vrácení celého pole názvů. Proto, když pracujete s mnoha soubory a adresáři, EnumerateDirectories může být efektivnější.

Seznam běžných vstupně-výstupních úloh najdete v tématu Běžné vstupně-výstupní úlohy.

Platí pro

GetDirectories(String, String)

Zdroj:
Directory.cs
Zdroj:
Directory.cs
Zdroj:
Directory.cs

Vrátí názvy podadresářů (včetně jejich cest), které odpovídají zadanému vzoru hledání v zadaném adresáři.

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()

Parametry

path
String

Relativní nebo absolutní cesta k adresáři, který chcete vyhledat. Tento řetězec neodlišuje velká a malá písmena.

searchPattern
String

Hledaný řetězec, který se má shodovat s názvy podadresářů v path. Tento parametr může obsahovat kombinaci platných literálů a zástupných znaků, ale nepodporuje regulární výrazy.

Návraty

String[]

Pole plných jmen (včetně cest) podadresářů, které odpovídají vzoru hledání v zadaném adresáři, nebo prázdné pole, pokud nejsou nalezeny žádné adresáře.

Výjimky

Volající nemá požadované oprávnění.

.NET Framework a .NET Core verze starší než 2.1: path je řetězec nulové délky, obsahuje pouze prázdné znaky nebo obsahuje jeden nebo více neplatných znaků. Na neplatné znaky se můžete dotazovat pomocí příkazu GetInvalidPathChars().

-nebo-

searchPattern neobsahuje platný vzor.

path nebo searchPattern je null.

Zadaná cesta, název souboru nebo obojí překračují maximální délku definovanou systémem.

path je název souboru.

-nebo-

Soubor nebo adresář je poškozený a nečitelný (příklad: neplatná první alokační jednotka oddílu FAT32).

Zadaná cesta je neplatná (například je na nezmapované jednotce).

Příklady

Následující příklad spočítá počet adresářů v cestě, které začínají zadaným písmenem.

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

Poznámky

Tato metoda vrátí všechny podadresáře přímo v zadaném adresáři, které odpovídají zadanému vzoru vyhledávání. Pokud zadaný adresář nemá žádné podadresáře nebo žádné podadresáře neodpovídají parametru searchPattern , vrátí tato metoda prázdné pole. Prohledá se pouze adresář s nejvyšším místem. Pokud chcete prohledávat také podadresáře, použijte metodu GetDirectories(String, String, SearchOption) a zadejte AllDirectories do parametru searchOption .

searchPattern může být kombinací literálu a zástupných znaků, ale nepodporuje regulární výrazy. V systému jsou povoleny následující specifikátory zástupných searchPatternznaků.

Specifikátor zástupných znaků Shody
* (hvězdička) Na této pozici není žádný nebo více znaků.
? (otazník) Přesně jeden znak v této pozici.

Jiné znaky než zástupný znak jsou literálové znaky. Například searchPattern řetězec "*t" vyhledá všechna jména končící path písmenem "t". Řetězec searchPattern "s*" vyhledá všechna jména začínající path písmenem "s".

searchPattern nesmí končit dvěma tečkami ("..") nebo obsahovat dvě tečky ("..") za nimi DirectorySeparatorChar nebo AltDirectorySeparatorChar, ani nesmí obsahovat neplatné znaky. Pomocí metody se můžete dotazovat na neplatné znaky GetInvalidPathChars .

Parametr path může zadat relativní nebo absolutní informace o cestě a nerozlišuje malá a malá písmena. Informace o relativní cestě jsou vykládány jako relativní k aktuálnímu pracovnímu adresáři. Informace o získání aktuálního pracovního adresáře najdete v tématu GetCurrentDirectory.

Metody EnumerateDirectories a GetDirectories se liší následujícím způsobem: Při použití EnumerateDirectoriesmůžete spustit výčet kolekce názvů před vrácením celé kolekce; při použití GetDirectoriesmusíte počkat, až se vrátí celé pole názvů, abyste měli přístup k matici. Proto při práci s mnoha soubory a adresáři EnumerateDirectories může být efektivnější.

Seznam běžných vstupně-výstupních úloh najdete v tématu Běžné vstupně-výstupní úlohy.

Viz také

Platí pro

GetDirectories(String)

Zdroj:
Directory.cs
Zdroj:
Directory.cs
Zdroj:
Directory.cs

Vrátí názvy podadresářů (včetně jejich cest) v zadaném adresáři.

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()

Parametry

path
String

Relativní nebo absolutní cesta k adresáři, který chcete vyhledat. Tento řetězec neodlišuje velká a malá písmena.

Návraty

String[]

Pole plných názvů (včetně cest) podadresářů v zadané cestě nebo prázdné pole, pokud nejsou nalezeny žádné adresáře.

Výjimky

Volající nemá požadované oprávnění.

Verze .NET Framework a .NET Core starší než 2.1: path je řetězec nulové délky, obsahuje pouze prázdné znaky nebo obsahuje jeden nebo více neplatných znaků. Pomocí metody se můžete dotazovat na neplatné znaky GetInvalidPathChars() .

path je null.

Zadaná cesta, název souboru nebo obojí překračují maximální délku definovanou systémem.

path je název souboru.

-nebo-

Soubor nebo adresář je poškozený a nečitelný (příklad: neplatná první alokační jednotka oddílu FAT32).

Zadaná cesta je neplatná (například je na nezmapované jednotce).

Příklady

Následující příklad přebírá pole názvů souborů nebo adresářů na příkazovém řádku, určuje, o jaký druh názvu se jedná, a odpovídajícím způsobem ho zpracuje.

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

Poznámky

Tato metoda je identická GetDirectories(String, String) s hvězdičkou (*) zadanou jako vzor hledání, takže vrací všechny podadresáře. Pokud potřebujete hledat podadresáře, použijte metodu GetDirectories(String, String, SearchOption) , která umožňuje zadat hledání podadresářů pomocí parametru searchOption .

Metody EnumerateDirectories a GetDirectories se liší následujícím způsobem: Při použití EnumerateDirectoriesmůžete spustit výčet kolekce názvů před vrácením celé kolekce; při použití GetDirectoriesmusíte počkat, až se vrátí celé pole názvů, abyste měli přístup k matici. Proto při práci s mnoha soubory a adresáři EnumerateDirectories může být efektivnější.

Parametr path může zadat informace o relativní nebo absolutní cestě. Informace o relativní cestě jsou vykládány jako relativní k aktuálnímu pracovnímu adresáři. Informace o získání aktuálního pracovního adresáře najdete v tématu GetCurrentDirectory.

Názvy vrácené touto metodou mají předponu s informacemi o adresáři zadanými v path.

Rozlišování velkých a malých písmen parametru path odpovídá rozlišení systému souborů, na kterém je kód spuštěn. Například nerozlišuje malá a malá písmena v systému souborů NTFS (výchozí systém souborů Windows) a v systémech souborů Linux se rozlišují malá a malá písmena.

Seznam běžných vstupně-výstupních úloh najdete v tématu Běžné vstupně-výstupní úlohy.

Viz také

Platí pro