Condividi tramite


Directory.EnumerateDirectories Metodo

Definizione

Restituisce una raccolta enumerabile dei nomi completi di directory che soddisfano i criteri specificati.

Overload

EnumerateDirectories(String)

Restituisce una raccolta enumerabile dei nomi completi di directory in un percorso specificato.

EnumerateDirectories(String, String)

Restituisce una raccolta enumerabile dei nomi completi di directory che corrispondono a un criterio di ricerca in un percorso specificato.

EnumerateDirectories(String, String, EnumerationOptions)

Restituisce una raccolta enumerabile dei nomi completi di directory che corrispondono a un criterio di ricerca in un percorso specificato e con ricerca facoltativa nelle sottodirectory.

EnumerateDirectories(String, String, SearchOption)

Restituisce una raccolta enumerabile dei nomi completi di directory che corrispondono a un criterio di ricerca in un percorso specificato e con ricerca facoltativa nelle sottodirectory.

EnumerateDirectories(String)

Origine:
Directory.cs
Origine:
Directory.cs
Origine:
Directory.cs

Restituisce una raccolta enumerabile dei nomi completi di directory in un percorso specificato.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateDirectories(System::String ^ path);
public static System.Collections.Generic.IEnumerable<string> EnumerateDirectories (string path);
static member EnumerateDirectories : string -> seq<string>
Public Shared Function EnumerateDirectories (path As String) As IEnumerable(Of String)

Parametri

path
String

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

Restituisce

Raccolta enumerabile dei nomi completi (inclusi i percorsi) per le directory incluse nella directory specificata da path.

Eccezioni

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

path è null.

path non è valido, ad esempio fa riferimento a un'unità non mappata.

path è un nome file.

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

Il chiamante non dispone dell'autorizzazione richiesta.

Il chiamante non dispone dell'autorizzazione richiesta.

Esempio

Nell'esempio seguente vengono enumerate le directory di primo livello in un percorso specificato.

using System;
using System.Collections.Generic;
using System.IO;

class Program
{
    private static void Main(string[] args)
    {
        try
        {
            // Set a variable to the My Documents path.
            string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

            List<string> dirs = new List<string>(Directory.EnumerateDirectories(docPath));

            foreach (var dir in dirs)
            {
                Console.WriteLine($"{dir.Substring(dir.LastIndexOf(Path.DirectorySeparatorChar) + 1)}");
            }
            Console.WriteLine($"{dirs.Count} directories found.");
        }
        catch (UnauthorizedAccessException ex)
        {
            Console.WriteLine(ex.Message);
        }
        catch (PathTooLongException ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}
open System
open System.IO

try
    // Set a variable to the My Documents path.
    let docPath = Environment.GetFolderPath Environment.SpecialFolder.MyDocuments

    let dirs = Directory.EnumerateDirectories docPath |> Seq.toList

    for dir in dirs do
        printfn $"{dir.Substring(dir.LastIndexOf Path.DirectorySeparatorChar + 1)}"
    printfn $"{dirs.Length} directories found."

with
| :? UnauthorizedAccessException as ex ->
    printfn $"{ex.Message}"
| :? PathTooLongException as ex ->
    printfn $"{ex.Message}"
Imports System.Collections.Generic
Imports System.IO

Module Module1

    Sub Main()
        Try
            Dim dirPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

            Dim dirs As List(Of String) = New List(Of String)(Directory.EnumerateDirectories(dirPath))

            For Each folder In dirs
                Console.WriteLine($"{dir.Substring(dir.LastIndexOf(Path.DirectorySeparatorChar) + 1)}")
            Next
            Console.WriteLine($"{dirs.Count} directories found.")
        Catch ex As UnauthorizedAccessException
            Console.WriteLine(ex.Message)
        Catch ex As PathTooLongException
            Console.WriteLine(ex.Message)
        End Try

    End Sub
End Module

Commenti

È possibile specificare informazioni relative o assolute sul path percorso nel parametro . Le informazioni relative sul percorso vengono interpretate come relative alla directory di lavoro corrente, che è possibile determinare usando il GetCurrentDirectory metodo . I nomi di directory restituiti sono preceduti dal valore specificato nel path parametro . Ad esempio, se si specifica un percorso relativo nel path parametro , i nomi di directory restituiti conterranno un percorso relativo.

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.

La raccolta restituita non viene memorizzata nella cache; ogni chiamata a nella GetEnumerator raccolta avvierà una nuova enumerazione.

Si applica a

EnumerateDirectories(String, String)

Origine:
Directory.cs
Origine:
Directory.cs
Origine:
Directory.cs

Restituisce una raccolta enumerabile dei nomi completi di directory che corrispondono a un criterio di ricerca in un percorso specificato.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateDirectories(System::String ^ path, System::String ^ searchPattern);
public static System.Collections.Generic.IEnumerable<string> EnumerateDirectories (string path, string searchPattern);
static member EnumerateDirectories : string * string -> seq<string>
Public Shared Function EnumerateDirectories (path As String, searchPattern As String) As IEnumerable(Of 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 directory in path. Questo parametro può contenere una combinazione di caratteri del percorso letterale e caratteri jolly (* e ?) validi, ma non supporta le espressioni regolari.

Restituisce

Raccolta enumerabile dei nomi completi (inclusi i percorsi) per le directory incluse nella directory specificata da path e corrispondenti al criterio di ricerca specificato.

Eccezioni

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

-oppure-

searchPattern non contiene un modello valido.

path è null.

-oppure-

searchPattern è null.

path non è valido, ad esempio fa riferimento a un'unità non mappata.

path è un nome file.

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

Il chiamante non dispone dell'autorizzazione richiesta.

Il chiamante non dispone dell'autorizzazione richiesta.

Esempio

Nell'esempio seguente vengono enumerate le directory di primo livello in un percorso specificato che corrispondono a un criterio di ricerca specificato.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

class Program
{

    private static void Main(string[] args)
    {
        try
        {
            string dirPath = @"\\archives\2009\reports";

            // LINQ query.
            var dirs = from dir in
                     Directory.EnumerateDirectories(dirPath, "dv_*")
                       select dir;

            // Show results.
            foreach (var dir in dirs)
            {
                // Remove path information from string.
                Console.WriteLine("{0}",
                    dir.Substring(dir.LastIndexOf("\\") + 1));
            }
            Console.WriteLine("{0} directories found.",
                dirs.Count<string>().ToString());

            // Optionally create a List collection.
            List<string> workDirs = new List<string>(dirs);
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
open System
open System.IO

try
    let dirPath = @"\\archives\2009\reports"

    let dirs = 
        Directory.EnumerateDirectories(dirPath, "dv_*")
        |> Seq.cache

    // Show results.
    for dir in dirs do
        // Remove path information from string.
        printfn $"{dir.Substring(dir.LastIndexOf '\\' + 1)}"
    printfn $"{Seq.length dirs} directories found."

    // Optionally create a list collection.
    let workDirs = Seq.toList dirs
    ()
    
with 
| :? UnauthorizedAccessException as uaEx ->
    printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
    printfn $"{pathEx.Message}"
Imports System.Collections.Generic
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            Dim dirPath As String = "\\archives\2009\reports"

            ' LINQ query.
            Dim dirs = From folder In _
                Directory.EnumerateDirectories(dirPath, "dv_*")
            For Each folder In dirs
                ' Remove path infomration from string.
                Console.WriteLine("{0}", _
                        folder.Substring(folder.LastIndexOf("\") + 1))
            Next
            Console.WriteLine("{0} directories found.", _
                dirs.Count.ToString())

            ' Optionally create a List collection.
            Dim workDirs As List(Of String) = New List(Of String)

        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub
End Module

Commenti

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.

È possibile specificare informazioni relative o assolute sul path percorso nel parametro . Le informazioni relative sul percorso vengono interpretate come relative alla directory di lavoro corrente, che è possibile determinare usando il GetCurrentDirectory metodo . I nomi di directory restituiti sono preceduti dal valore specificato nel path parametro . Ad esempio, se si specifica un percorso relativo nel path parametro , i nomi di directory restituiti conterranno un percorso relativo.

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.

La raccolta restituita non viene memorizzata nella cache; ogni chiamata a nella GetEnumerator raccolta avvierà una nuova enumerazione.

Si applica a

EnumerateDirectories(String, String, EnumerationOptions)

Origine:
Directory.cs
Origine:
Directory.cs
Origine:
Directory.cs

Restituisce una raccolta enumerabile dei nomi completi di directory che corrispondono a un criterio di ricerca in un percorso specificato e con ricerca facoltativa nelle sottodirectory.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateDirectories(System::String ^ path, System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public static System.Collections.Generic.IEnumerable<string> EnumerateDirectories (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
static member EnumerateDirectories : string * string * System.IO.EnumerationOptions -> seq<string>
Public Shared Function EnumerateDirectories (path As String, searchPattern As String, enumerationOptions As EnumerationOptions) As IEnumerable(Of 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 directory in path. Questo parametro può contenere una combinazione di caratteri del percorso letterale e caratteri jolly (* e ?) validi, ma non supporta le espressioni regolari.

enumerationOptions
EnumerationOptions

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

Restituisce

Raccolta enumerabile dei nomi completi (inclusi i percorsi) per le directory nella directory specificata da path e corrispondenti al criterio di ricerca e alle opzioni di enumerazione specificati.

Eccezioni

.NET Framework e versioni di .NET Core precedenti alla 2.1: path è una stringa di lunghezza zero, contiene solo spazi vuoti o contiene 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.

path non è valido, ad esempio fa riferimento a un'unità non mappata.

path è un nome file.

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

Il chiamante non dispone dell'autorizzazione richiesta.

Il chiamante non dispone dell'autorizzazione richiesta.

Commenti

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.

È possibile specificare informazioni relative o assolute sul path percorso nel parametro . Le informazioni relative sul percorso vengono interpretate come relative alla directory di lavoro corrente, che è possibile determinare usando il GetCurrentDirectory metodo . I nomi di directory restituiti sono preceduti dal valore specificato nel path parametro . Ad esempio, se si specifica un percorso relativo nel path parametro , i nomi di directory restituiti conterranno un percorso relativo.

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.

La raccolta restituita non viene memorizzata nella cache; ogni chiamata a nella GetEnumerator raccolta avvierà una nuova enumerazione.

Si applica a

EnumerateDirectories(String, String, SearchOption)

Origine:
Directory.cs
Origine:
Directory.cs
Origine:
Directory.cs

Restituisce una raccolta enumerabile dei nomi completi di directory che corrispondono a un criterio di ricerca in un percorso specificato e con ricerca facoltativa nelle sottodirectory.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateDirectories(System::String ^ path, System::String ^ searchPattern, System::IO::SearchOption searchOption);
public static System.Collections.Generic.IEnumerable<string> EnumerateDirectories (string path, string searchPattern, System.IO.SearchOption searchOption);
static member EnumerateDirectories : string * string * System.IO.SearchOption -> seq<string>
Public Shared Function EnumerateDirectories (path As String, searchPattern As String, searchOption As SearchOption) As IEnumerable(Of 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 directory in path. Questo parametro può contenere una combinazione di caratteri del percorso letterale e caratteri jolly (* e ?) validi, ma non supporta le espressioni regolari.

searchOption
SearchOption

Uno dei valori di enumerazione che specifica se l'operazione di ricerca deve includere solo la directory corrente o tutte le sottodirectory. Il valore predefinito è TopDirectoryOnly.

Restituisce

Raccolta enumerabile dei nomi completi (inclusi i percorsi) per le directory nella directory specificata da path e corrispondenti al criterio di ricerca e all'opzione di ricerca specificati.

Eccezioni

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

-oppure-

searchPattern non contiene un modello valido.

path è null.

-oppure-

searchPattern è null.

searchOption non è un valore valido di SearchOption.

path non è valido, ad esempio fa riferimento a un'unità non mappata.

path è un nome file.

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

Il chiamante non dispone dell'autorizzazione richiesta.

Il chiamante non dispone dell'autorizzazione richiesta.

Esempio

Nell'esempio seguente vengono enumerate le directory in un percorso specificato che corrispondono a un criterio di ricerca specificato. Usa il searchOption parametro per specificare che tutte le sottodirectory devono essere incluse nella ricerca.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

class Program
{

    private static void Main(string[] args)
    {
        try
        {
            string dirPath = @"\\archives\2009\reports";

            // LINQ query.
            var dirs = from dir in
                     Directory.EnumerateDirectories(dirPath, "dv_*",
                        SearchOption.AllDirectories)
                       select dir;

            // Show results.
            foreach (var dir in dirs)
            {
                // Remove path information from string.
                Console.WriteLine("{0}",
                    dir.Substring(dir.LastIndexOf("\\") + 1));
            }
            Console.WriteLine("{0} directories found.",
                dirs.Count<string>().ToString());

            // Optionally create a List collection.
            List<string> workDirs = new List<string>(dirs);
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
open System
open System.IO

try
    let dirPath = @"\\archives\2009\reports"

    let dirs =
        Directory.EnumerateDirectories(dirPath, "dv_*", SearchOption.AllDirectories)
        |> Seq.cache

    // Show results.
    for dir in dirs do
        // Remove path information from string.
        printfn $"{dir.Substring(dir.LastIndexOf '\\' + 1)}"
    printfn $"{Seq.length dirs} directories found."

    // Optionally create a List collection.
    let workDirs = Seq.toList dirs
    ()

with 
| :? UnauthorizedAccessException as uaEx ->
    printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
    printfn $"{pathEx.Message}"
Imports System.Collections.Generic
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            Dim dirPath As String = "\\archives\2009\reports"

            ' LINQ query.
            Dim dirs = From folder In _
                Directory.EnumerateDirectories(dirPath, "dv_*", _
                    SearchOption.AllDirectories)
            For Each folder In dirs
                ' Remove path infomration from string.
                Console.WriteLine("{0}", _
                        folder.Substring(folder.LastIndexOf("\") + 1))
            Next
            Console.WriteLine("{0} directories found.", _
                dirs.Count.ToString())

            ' Optionally create a List collection.
            Dim workDirs As List(Of String) = New List(Of String)

        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub
End Module

Commenti

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.

È possibile specificare informazioni relative o assolute sul path percorso nel parametro . Le informazioni relative sul percorso vengono interpretate come relative alla directory di lavoro corrente, che è possibile determinare usando il GetCurrentDirectory metodo . I nomi di directory restituiti sono preceduti dal valore specificato nel path parametro . Ad esempio, se si specifica un percorso relativo nel path parametro , i nomi di directory restituiti conterranno un percorso relativo.

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.

La raccolta restituita non viene memorizzata nella cache; ogni chiamata a nella GetEnumerator raccolta avvierà una nuova enumerazione.

Si applica a