Directory.GetDirectories Metodo

Definizione

Restituisce i nomi delle sottodirectory che soddisfano i criteri specificati.

Overload

GetDirectories(String, String, SearchOption)

Restituisce i nomi delle sottodirectory (incluso il relativo percorso) che corrispondono ai criteri di ricerca specificati nella directory specificata e con ricerca facoltativa nelle sottodirectory.

GetDirectories(String, String, EnumerationOptions)

Restituisce i nomi delle sottodirectory (inclusi i percorsi) corrispondenti al criterio di ricerca e alle opzioni di enumerazione specificati nella directory specificata.

GetDirectories(String, String)

Restituisce i nomi delle sottodirectory (inclusi i percorsi) corrispondenti al criterio di ricerca specificato nella directory specificata.

GetDirectories(String)

Restituisce i nomi delle sottodirectory, inclusi i relativi percorsi, nella directory specificata.

GetDirectories(String, String, SearchOption)

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

Restituisce i nomi delle sottodirectory (incluso il relativo percorso) che corrispondono ai criteri di ricerca specificati nella directory specificata e con ricerca facoltativa nelle sottodirectory.

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

Parametri

path
String

Percorso relativo o assoluto della directory in cui eseguire la ricerca. Stringa senza distinzione tra maiuscole e minuscole.

searchPattern
String

Stringa di ricerca in base alla quale confrontare i nomi delle sottodirectory in path. Questo parametro può contenere una combinazione di caratteri letterali e caratteri jolly validi, ma non supporta le espressioni regolari.

searchOption
SearchOption

Uno dei valori di enumerazione che specifica se l'operazione di ricerca deve includere tutte le sottodirectory o la sottodirectory corrente.

Restituisce

String[]

Una matrice di nomi completi (inclusi i percorsi) delle sottodirectory che soddisfano i criteri di ricerca specificati o una matrice vuota se non viene trovata alcuna directory.

Eccezioni

.NET Framework e versioni di .NET Core precedenti alla 2.1: path è una stringa di lunghezza zero, contiene solo spazi vuoti o contiene uno o più caratteri non validi. È possibile cercare i caratteri non validi usando il metodo GetInvalidPathChars().

-oppure-

searchPattern non contiene un modello valido.

path o searchPattern è null.

searchOption non è un valore valido di SearchOption.

Il chiamante non dispone dell'autorizzazione richiesta.

Il percorso specificato, il nome file o entrambi superano la lunghezza massima definita dal sistema.

path è un nome file.

-oppure-

Il file o la directory è danneggiato e illeggibile (ad esempio: prima unità di allocazione non valida di una partizione FAT32).

Il percorso specificato non è valido, ad esempio si trova in un'unità non mappata.

Esempio

Nell'esempio seguente viene conteggiato il numero di directory che iniziano con la lettera specificata in un percorso. Viene eseguita la ricerca solo nella directory di primo livello.

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

Commenti

Il path parametro può specificare informazioni relative o assolute sul percorso e non fa distinzione tra maiuscole e minuscole. Le informazioni relative sul percorso sono interpretate come relative alla directory di lavoro corrente. Per ottenere la directory di lavoro corrente, vedere GetCurrentDirectory.

searchPattern può essere una combinazione di caratteri letterali e caratteri jolly, ma non supporta espressioni regolari. Gli identificatori con caratteri jolly seguenti sono consentiti in searchPattern.

Identificatore di caratteri jolly Corrispondenze
* (asterisco) Zero o più caratteri in tale posizione.
? (punto interrogativo) Esattamente un carattere in quella posizione.

I caratteri diversi dai caratteri jolly sono caratteri letterali. Ad esempio, la searchPattern stringa "*t" cerca tutti i nomi che path terminano con la lettera "t". La searchPattern stringa "s*" cerca tutti i nomi che iniziano path con la lettera "s".

searchPattern non può terminare in due punti ("..") o contenere due punti ("..") seguiti da DirectorySeparatorChar o AltDirectorySeparatorChar, né può contenere caratteri non validi. È possibile cercare i caratteri non validi usando il metodo GetInvalidPathChars.

I EnumerateDirectories metodi e GetDirectories differiscono nel modo seguente: quando si utilizza EnumerateDirectories, è possibile iniziare a enumerare la raccolta di nomi prima che venga restituita l'intera raccolta. Quando si utilizza GetDirectories, è necessario attendere che venga restituita l'intera matrice di nomi prima di poter accedere alla matrice. Pertanto, quando si lavora con molti file e directory, EnumerateDirectories può essere più efficiente.

Per un elenco delle attività di I/O comuni, vedere Attività di I/O comuni.

Vedi anche

Si applica a

GetDirectories(String, String, EnumerationOptions)

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

Restituisce i nomi delle sottodirectory (inclusi i percorsi) corrispondenti al criterio di ricerca e alle opzioni di enumerazione specificati nella directory specificata.

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

Parametri

path
String

Percorso relativo o assoluto della directory in cui eseguire la ricerca. Stringa senza distinzione tra maiuscole e minuscole.

searchPattern
String

Stringa di ricerca in base alla quale confrontare i nomi delle sottodirectory in path. Questo parametro può contenere una combinazione di caratteri letterali e caratteri jolly validi, ma non supporta le espressioni regolari.

enumerationOptions
EnumerationOptions

Oggetto che descrive la configurazione di ricerca ed enumerazione da usare.

Restituisce

String[]

Una matrice dei nomi completi (inclusi i percorsi) delle sottodirectory che soddisfano il criterio di ricerca e le opzioni di enumerazione nella directory specificata o una matrice vuota se non viene trovata alcuna directory.

Eccezioni

Il chiamante non dispone dell'autorizzazione richiesta.

.NET Framework e versioni di .NET Core precedenti alla 2.1: path è una stringa di lunghezza zero, contiene solo spazi vuoti o contiene uno o più caratteri non validi. Per cercare i caratteri non validi, usare GetInvalidPathChars().

-oppure-

searchPattern non contiene un criterio valido.

path o searchPattern è null.

Il percorso specificato, il nome file o entrambi superano la lunghezza massima definita dal sistema.

path è un nome file.

-oppure-

Il file o la directory è danneggiato e illeggibile (ad esempio: prima unità di allocazione non valida di una partizione FAT32).

Il percorso specificato non è valido, ad esempio si trova in un'unità non mappata.

Commenti

Questo metodo restituisce tutte le sottodirectory direttamente nella directory specificata che corrispondono al criterio di ricerca specificato. Se la directory specificata non ha sottodirectory o nessuna sottodirectory corrisponde al searchPattern parametro , questo metodo restituisce una matrice vuota. Viene eseguita la ricerca solo nella directory superiore. Se si desidera eseguire ricerche anche nelle sottodirectory, usare il GetDirectories(String, String, SearchOption) metodo e specificare AllDirectories nel searchOption parametro .

searchPattern può essere una combinazione di caratteri letterali e caratteri jolly, ma non supporta espressioni regolari. Gli identificatori con caratteri jolly seguenti sono consentiti in searchPattern.

Identificatore di caratteri jolly Corrispondenze
* (asterisco) Zero o più caratteri in tale posizione.
? (punto interrogativo) Esattamente un carattere in quella posizione.

I caratteri diversi dai caratteri jolly sono caratteri letterali. Ad esempio, la searchPattern stringa "*t" cerca tutti i nomi che path terminano con la lettera "t". La searchPattern stringa "s*" cerca tutti i nomi che iniziano path con la lettera "s".

searchPattern non può terminare in due punti ("..") o contenere due punti ("..") seguiti da DirectorySeparatorChar o AltDirectorySeparatorChar, né può contenere caratteri non validi. È possibile cercare i caratteri non validi usando il metodo GetInvalidPathChars.

Il path parametro può specificare informazioni relative o assolute sul percorso e non fa distinzione tra maiuscole e minuscole. Le informazioni relative sul percorso sono interpretate come relative alla directory di lavoro corrente. Per ottenere la directory di lavoro corrente, vedere GetCurrentDirectory.

I EnumerateDirectories metodi e GetDirectories differiscono nel modo seguente: quando si utilizza EnumerateDirectories, è possibile iniziare a enumerare la raccolta di nomi prima che venga restituita l'intera raccolta. Quando si utilizza GetDirectories, è necessario attendere che venga restituita l'intera matrice di nomi prima di poter accedere alla matrice. Pertanto, quando si lavora con molti file e directory, EnumerateDirectories può essere più efficiente.

Per un elenco delle attività di I/O comuni, vedere Attività di I/O comuni.

Si applica a

GetDirectories(String, String)

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

Restituisce i nomi delle sottodirectory (inclusi i percorsi) corrispondenti al criterio di ricerca specificato nella directory specificata.

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

Parametri

path
String

Percorso relativo o assoluto della directory in cui eseguire la ricerca. Stringa senza distinzione tra maiuscole e minuscole.

searchPattern
String

Stringa di ricerca in base alla quale confrontare i nomi delle sottodirectory in path. Questo parametro può contenere una combinazione di caratteri letterali e caratteri jolly validi, ma non supporta le espressioni regolari.

Restituisce

String[]

Una matrice dei nomi completi (inclusi i percorsi) delle sottodirectory che soddisfano i criteri di ricerca nella directory specificata o una matrice vuota se non viene trovata alcuna directory.

Eccezioni

Il chiamante non dispone dell'autorizzazione richiesta.

.NET Framework e versioni di .NET Core precedenti alla 2.1: path è una stringa di lunghezza zero, contiene solo spazi vuoti o contiene uno o più caratteri non validi. Per cercare i caratteri non validi, usare GetInvalidPathChars().

-oppure-

searchPattern non contiene un criterio valido.

path o searchPattern è null.

Il percorso specificato, il nome file o entrambi superano la lunghezza massima definita dal sistema.

path è un nome file.

-oppure-

Il file o la directory sono danneggiati e non leggibili (ad esempio: prima unità di allocazione non valida di una partizione FAT32).

Il percorso specificato non è valido, ad esempio si trova in un'unità non mappata.

Esempio

Nell'esempio seguente viene conteggiato il numero di directory in un percorso che inizia con la lettera specificata.

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

Commenti

Questo metodo restituisce tutte le sottodirectory direttamente nella directory specificata che corrispondono al modello di ricerca specificato. Se la directory specificata non ha sottodirectory o nessuna sottodirectory corrispondente al searchPattern parametro, questo metodo restituisce una matrice vuota. Viene eseguita solo la ricerca nella directory superiore. Se si vuole cercare anche le sottodirectory, usare il GetDirectories(String, String, SearchOption) metodo e specificare AllDirectories nel searchOption parametro.

searchPattern può essere una combinazione di caratteri letterali e jolly, ma non supporta espressioni regolari. Gli identificatori jolly seguenti sono consentiti in searchPattern.

Identificatore jolly Corrispondenze
* (asterisco) Zero o più caratteri in tale posizione.
? (punto interrogativo) Esattamente un carattere in tale posizione.

I caratteri diversi dal carattere jolly sono caratteri letterali. Ad esempio, la searchPattern stringa "*t" cerca tutti i nomi path che terminano con la lettera "t". La searchPattern stringa "s*" cerca tutti i nomi in path inizio con la lettera "s".

searchPattern non può terminare in due periodi ("..") o contenere due periodi ("..") seguiti da DirectorySeparatorChar o AltDirectorySeparatorChar, né può contenere caratteri non validi. È possibile cercare i caratteri non validi usando il metodo GetInvalidPathChars.

Il path parametro può specificare informazioni relative o assolute sul percorso e non è distinzione tra maiuscole e minuscole. Le informazioni relative sul percorso sono interpretate come relative alla directory di lavoro corrente. Per ottenere la directory di lavoro corrente, vedere GetCurrentDirectory.

I EnumerateDirectories metodi e GetDirectories differiscono come indicato di seguito: quando si usa EnumerateDirectories, è possibile iniziare a enumerare la raccolta di nomi prima che venga restituita l'intera raccolta. Quando si usa GetDirectories, è necessario attendere che venga restituita l'intera matrice di nomi prima di poter accedere alla matrice. Pertanto, quando si utilizzano molti file e directory, EnumerateDirectories può essere più efficiente.

Per un elenco di attività di I/O comuni, vedere Attività di I/O comuni.

Vedi anche

Si applica a

GetDirectories(String)

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

Restituisce i nomi delle sottodirectory, inclusi i relativi percorsi, nella directory specificata.

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

Parametri

path
String

Percorso relativo o assoluto della directory in cui eseguire la ricerca. Stringa senza distinzione tra maiuscole e minuscole.

Restituisce

String[]

Una matrice dei nomi completi (inclusi i percorsi) delle sottodirectory nel percorso specificato o una matrice vuota se non viene trovata alcuna directory.

Eccezioni

Il chiamante non dispone dell'autorizzazione richiesta.

.NET Framework e versioni di .NET Core precedenti a 2.1: path è una stringa di lunghezza zero, contiene solo spazio vuoto o contiene uno o più caratteri non validi. È possibile cercare i caratteri non validi usando il metodo GetInvalidPathChars().

path è null.

Il percorso specificato, il nome file o entrambi superano la lunghezza massima definita dal sistema.

path è un nome file.

-oppure-

Il file o la directory sono danneggiati e non leggibili (ad esempio: prima unità di allocazione non valida di una partizione FAT32).

Il percorso specificato non è valido, ad esempio si trova in un'unità non mappata.

Esempio

L'esempio seguente accetta una matrice di nomi di file o directory nella riga di comando, determina il tipo di nome che è e lo elabora in modo appropriato.

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

Commenti

Questo metodo è identico a GetDirectories(String, String) con l'asterisco (*) specificato come modello di ricerca, quindi restituisce tutte le sottodirectory. Se è necessario cercare sottodirectory, usare il GetDirectories(String, String, SearchOption) metodo, che consente di specificare una ricerca di sottodirectory con il searchOption parametro .

I EnumerateDirectories metodi e GetDirectories differiscono come indicato di seguito: quando si usa EnumerateDirectories, è possibile iniziare a enumerare la raccolta di nomi prima che venga restituita l'intera raccolta. Quando si usa GetDirectories, è necessario attendere che venga restituita l'intera matrice di nomi prima di poter accedere alla matrice. Pertanto, quando si utilizzano molti file e directory, EnumerateDirectories può essere più efficiente.

Il path parametro può specificare informazioni sul percorso relativo o assoluto. Le informazioni relative sul percorso sono interpretate come relative alla directory di lavoro corrente. Per ottenere la directory di lavoro corrente, vedere GetCurrentDirectory.

I nomi restituiti da questo metodo sono preceduti dalle informazioni della directory fornite in path.

La distinzione tra maiuscole e minuscole del path parametro corrisponde a quella del file system in cui è in esecuzione il codice. Ad esempio, è senza distinzione tra maiuscole e minuscole in NTFS (file system windows predefinito) e distinzione tra maiuscole e minuscole nei file system Linux.

Per un elenco di attività di I/O comuni, vedere Attività di I/O comuni.

Vedi anche

Si applica a