Condividi tramite


Directory.EnumerateFiles Metodo

Definizione

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

Overload

EnumerateFiles(String, String, SearchOption)

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

EnumerateFiles(String, String, EnumerationOptions)

Restituisce una raccolta enumerabile dei nomi di file completi che corrispondono a un criterio di ricerca a alle opzioni di enumerazione in un percorso specificato, con ricerca facoltativa nelle sottodirectory.

EnumerateFiles(String)

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

EnumerateFiles(String, String)

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

EnumerateFiles(String, String, SearchOption)

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

Restituisce una raccolta enumerabile dei nomi di file completi 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 ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::SearchOption searchOption);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.SearchOption searchOption);
static member EnumerateFiles : string * string * System.IO.SearchOption -> seq<string>
Public Shared Function EnumerateFiles (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 dei file 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 i file inclusi 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 viene illustrato come recuperare tutti i file di testo in una directory e le relative sottodirectory e spostarli in una nuova directory. Dopo aver spostato i file, non esistono più nelle directory originali.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories);

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"

try
    let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories)

    for currentFile in txtFiles do
        let fileName = currentFile.Substring(sourceDirectory.Length + 1)
        Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
    printfn $"{e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories)

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

    End Sub

End Module

Nell'esempio seguente enumera in modo ricorsivo tutti i file con estensione .txt, legge ogni riga del file e visualizza la riga se contiene la stringa "Microsoft".

using System;
using System.IO;
using System.Linq;

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

            var files = from file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
                        from line in File.ReadLines(file)
                        where line.Contains("Microsoft")
                        select new
                        {
                            File = file,
                            Line = line
                        };

            foreach (var f in files)
            {
                Console.WriteLine($"{f.File}\t{f.Line}");
            }
            Console.WriteLine($"{files.Count().ToString()} files found.");
        }
        catch (UnauthorizedAccessException uAEx)
        {
            Console.WriteLine(uAEx.Message);
        }
        catch (PathTooLongException pathEx)
        {
            Console.WriteLine(pathEx.Message);
        }
    }
}
open System
open System.IO

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

    let files =
        query {
            for file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories) do
            for line in File.ReadLines file do
            where (line.Contains "Microsoft")
            select {| File = file; Line = line |}
        }

    for f in files do
        printfn $"{f.File}\t{f.Line}"
    printfn $"{Seq.length files} files found."

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

Module Module1

    Sub Main()
        Try
            Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
            Dim files = From chkFile In Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
                        From line In File.ReadLines(chkFile)
                        Where line.Contains("Microsoft")
                        Select New With {.curFile = chkFile, .curLine = line}

            For Each f In files
                Console.WriteLine($"{f.File}\t{f.Line}")
            Next
            Console.WriteLine($"{files.Count} files found.")
        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".

Nota

Solo .NET Framework: Quando si usa il carattere jolly asterisco in searchPattern e si specifica un'estensione di file a tre caratteri, ad esempio "*.txt", questo metodo restituisce anche i file con estensioni che iniziano con l'estensione specificata. Ad esempio, il criterio di ricerca "*.xls" restituisce sia "book.xls" che "book.xlsx". Questo comportamento si verifica solo se viene usato un asterisco nel criterio di ricerca e l'estensione di file fornita è esattamente tre caratteri. Se si utilizza il carattere jolly del punto interrogativo in un punto qualsiasi nel criterio di ricerca, questo metodo restituisce solo i file che corrispondono esattamente all'estensione di file specificata. La tabella seguente illustra questa anomalia in .NET Framework.

File nella directory Modello di ricerca .NET 5+ restituisce .NET Framework restituisce
file.ai, file.aif *.ai file.ai file.ai
book.xls, book.xlsx *.xls book.xls book.xls, book.xlsx
ello.txt, hello.txt, hello.txtt ?ello.txt hello.txt hello.txt

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 sul percorso con il path parametro . Le informazioni relative sul percorso vengono interpretate come relative alla directory di lavoro corrente, che è possibile determinare usando il GetCurrentDirectory metodo .

I EnumerateFiles metodi e GetFiles differiscono come segue: quando si usa EnumerateFiles, è possibile iniziare a enumerare la raccolta di nomi prima che venga restituita l'intera raccolta. Quando si usa GetFiles, è 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, EnumerateFiles può essere più efficiente.

La raccolta restituita non viene memorizzata nella cache. Ogni chiamata a nella GetEnumerator raccolta avvia una nuova enumerazione.

Si applica a

EnumerateFiles(String, String, EnumerationOptions)

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

Restituisce una raccolta enumerabile dei nomi di file completi che corrispondono a un criterio di ricerca a alle opzioni di enumerazione in un percorso specificato, con ricerca facoltativa nelle sottodirectory.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
static member EnumerateFiles : string * string * System.IO.EnumerationOptions -> seq<string>
Public Shared Function EnumerateFiles (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 dei file 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 i file inclusi 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 è 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.

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".

Nota

Solo .NET Framework: Quando si usa il carattere jolly asterisco in searchPattern e si specifica un'estensione di file a tre caratteri, ad esempio "*.txt", questo metodo restituisce anche i file con estensioni che iniziano con l'estensione specificata. Ad esempio, il criterio di ricerca "*.xls" restituisce sia "book.xls" che "book.xlsx". Questo comportamento si verifica solo se viene usato un asterisco nel criterio di ricerca e l'estensione di file fornita è esattamente tre caratteri. Se si utilizza il carattere jolly del punto interrogativo in un punto qualsiasi nel criterio di ricerca, questo metodo restituisce solo i file che corrispondono esattamente all'estensione di file specificata. La tabella seguente illustra questa anomalia in .NET Framework.

File nella directory Modello di ricerca .NET 5+ restituisce .NET Framework restituisce
file.ai, file.aif *.ai file.ai file.ai
book.xls, book.xlsx *.xls book.xls book.xls, book.xlsx
ello.txt, hello.txt, hello.txtt ?ello.txt hello.txt hello.txt

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 sul percorso con il path parametro . Le informazioni relative sul percorso vengono interpretate come relative alla directory di lavoro corrente, che è possibile determinare usando il GetCurrentDirectory metodo .

I EnumerateFiles metodi e GetFiles differiscono come segue: quando si usa EnumerateFiles, è possibile iniziare a enumerare la raccolta di nomi prima che venga restituita l'intera raccolta. Quando si usa GetFiles, è 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, EnumerateFiles può essere più efficiente.

La raccolta restituita non viene memorizzata nella cache. Ogni chiamata a nella GetEnumerator raccolta avvia una nuova enumerazione.

Si applica a

EnumerateFiles(String)

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

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

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path);
static member EnumerateFiles : string -> seq<string>
Public Shared Function EnumerateFiles (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 i file inclusi 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 viene illustrato come recuperare tutti i file in una directory e spostarli in una nuova directory. Dopo aver spostato i file, non esistono più nella directory originale.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory);

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"

try
    let txtFiles = Directory.EnumerateFiles sourceDirectory

    for currentFile in txtFiles do
        let fileName = currentFile.Substring(sourceDirectory.Length + 1)
        Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
    printfn $"{e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory)

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

    End Sub

End Module

L'esempio seguente enumera i file nella directory specificata, legge ogni riga del file e visualizza la riga se contiene la stringa "Europe".

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

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // LINQ query for all files containing the word 'Europe'.
            var files = from file in
                Directory.EnumerateFiles(@"\\archives1\library\")
                where file.ToLower().Contains("europe")
                select file;

            foreach (var file in files)
            {
                Console.WriteLine("{0}", file);
            }
            Console.WriteLine("{0} files found.", files.Count<string>().ToString());
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
open System
open System.IO

try
    // All files containing the word 'Europe'.
    let files =
        Directory.EnumerateFiles @"\\archives1\library\"
        |> Seq.filter (fun file -> file.ToLower().Contains "europe")

    for file in files do
        printfn $"{file}"
    printfn $"{Seq.length files} files found."

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

Module Module1

    Sub Main()
        Try
            ' LINQ query for all files containing the word 'Europe'.
            Dim files = From file In Directory.EnumerateFiles("\\archives1\library\")
                Where file.ToLower().Contains("europe")

            For Each file In files
                Console.WriteLine("{0}", file)
            Next
            Console.WriteLine("{0} files found.", files.Count.ToString())
        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub

End Module

Commenti

È possibile specificare informazioni relative sul percorso con il path parametro . Le informazioni relative sul percorso vengono interpretate come relative alla directory di lavoro corrente, che è possibile determinare usando il GetCurrentDirectory metodo .

I EnumerateFiles metodi e GetFiles differiscono come segue: quando si usa EnumerateFiles, è possibile iniziare a enumerare la raccolta di nomi prima che venga restituita l'intera raccolta. Quando si usa GetFiles, è 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, EnumerateFiles 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

EnumerateFiles(String, String)

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

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

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern);
static member EnumerateFiles : string * string -> seq<string>
Public Shared Function EnumerateFiles (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 dei file 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 i file inclusi 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. È possibile cercare i caratteri non validi usando 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 viene illustrato come recuperare tutti i file di testo in una directory e spostarli in una nuova directory. Dopo aver spostato i file, non esistono più nella directory originale.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt");

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"

try
    let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")

    for currentFile in txtFiles do
        let fileName = currentFile.Substring(sourceDirectory.Length + 1)
        Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))

with e ->
    printfn $"{e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try
    End Sub

End Module

L'esempio seguente enumera i file nella directory specificata con estensione ".txt", legge ogni riga del file e visualizza la riga se contiene la stringa "Europe".

using System;
using System.Linq;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // LINQ query for all .txt files containing the word 'Europe'.
            var files = from file in Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
                where file.ToLower().Contains("europe")
                select file;

            foreach (var file in files)
            {
                Console.WriteLine("{0}", file);
            }
            Console.WriteLine("{0} files found.", files.Count<string>().ToString());
        }
            
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
open System
open System.IO

try
    // All .txt files containing the word 'Europe'.
    let files = 
        Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
        |> Seq.filter(fun file -> file.ToLower().Contains "europe")

    for file in files do
        printfn $"{file}"
    printfn $"{Seq.length files} files found."

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

Module Module1

    Sub Main()
        Try
            ' LINQ query for all .txt files containing the word 'Europe'.
            Dim files = From file In Directory.EnumerateFiles("\\archives1\library\", "*.txt")
                Where file.ToLower().Contains("europe")

            For Each file In files
                Console.WriteLine("{0}", file)
            Next
            Console.WriteLine("{0} files found.", files.Count.ToString())
        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".

Nota

Solo .NET Framework: Quando si usa il carattere jolly asterisco in searchPattern e si specifica un'estensione di file a tre caratteri, ad esempio "*.txt", questo metodo restituisce anche i file con estensioni che iniziano con l'estensione specificata. Ad esempio, il criterio di ricerca "*.xls" restituisce sia "book.xls" che "book.xlsx". Questo comportamento si verifica solo se viene usato un asterisco nel criterio di ricerca e l'estensione di file fornita è esattamente tre caratteri. Se si utilizza il carattere jolly del punto interrogativo in un punto qualsiasi nel criterio di ricerca, questo metodo restituisce solo i file che corrispondono esattamente all'estensione di file specificata. La tabella seguente illustra questa anomalia in .NET Framework.

File nella directory Modello di ricerca .NET 5+ restituisce .NET Framework restituisce
file.ai, file.aif *.ai file.ai file.ai
book.xls, book.xlsx *.xls book.xls book.xls, book.xlsx
ello.txt, hello.txt, hello.txtt ?ello.txt hello.txt hello.txt

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.

È possibile specificare le informazioni relative sul percorso con il path parametro . Le informazioni relative sul percorso vengono interpretate come relative alla directory di lavoro corrente, che è possibile determinare usando il GetCurrentDirectory metodo .

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

La raccolta restituita non viene memorizzata nella cache. Ogni chiamata alla GetEnumerator raccolta avvia una nuova enumerazione.

Si applica a