Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Metodo DirectoryInfo.EnumerateDirectories (String, SearchOption)

Restituisce una raccolta enumerabile di informazioni sulla directory che corrispondono a un criterio di ricerca e all'opzione di ricerca subdirectory specificati.

Spazio dei nomi:  System.IO
Assembly:  mscorlib (in mscorlib.dll)

public IEnumerable<DirectoryInfo> EnumerateDirectories(
	string searchPattern,
	SearchOption searchOption
)

Parametri

searchPattern
Tipo: System.String
Stringa di ricerca in base alla quale confrontare i nomi delle directory. In questo parametro può essere contenuta una combinazione di caratteri del percorso letterali e caratteri jolly (* e ?) validi (vedere la sezione Note), ma le espressioni regolari non sono supportate. Il criterio predefinito è "*" che restituisce tutti i file.
searchOption
Tipo: System.IO.SearchOption
Uno dei valori di enumerazione che specifica se l'operazione di ricerca deve includere solo la directory corrente o anche tutte le sottodirectory. Il valore predefinito è TopDirectoryOnly.

Valore restituito

Tipo: System.Collections.Generic.IEnumerable<DirectoryInfo>
Raccolta enumerabile di directory che corrisponde a searchPattern e searchOption.

EccezioneCondizione
ArgumentNullException

searchPattern è null.

ArgumentOutOfRangeException

searchOption non è un valore SearchOption valido.

DirectoryNotFoundException

Il percorso incapsulato nell'oggetto DirectoryInfo non è valido, poiché, ad esempio, si trova su un'unità non mappata.

SecurityException

Il chiamante non dispone dell'autorizzazione richiesta.

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

Identificatore jolly

Corrispondenze

* (asterisco)

Zero o più caratteri in tale posizione.

? (punto interrogativo)

Zero o un carattere in tale posizione.

I caratteri diversi dal carattere jolly sono caratteri letterali. Per esempio, la stringa "*t" esegue la ricerca in di tutti i nomi che terminano con la lettera "t". ". Con la stringa searchPattern "s*" viene eseguita la ricerca in path di tutti i nomi che iniziano con la lettera "s".

Le differenze tra i metodi GetDirectories e EnumerateDirectories sono le seguenti:

  • Quando si utilizza EnumerateDirectories, è possibile avviare l'enumerazione della raccolta di oggetti DirectoryInfo prima che l'intera raccolta venga restituita.

  • Quando si utilizza GetDirectories, è necessario attendere la restituzione dell'intero array di oggetti DirectoryInfo prima di poter accedere all'array.

Pertanto, quando si opera con molti file e directory, le prestazioni di EnumerateDirectories possono essere più efficienti.

Questo metodo prepopola i valori delle proprietà DirectoryInfo seguenti:

L'insieme restituito non è memorizzato nella cache; ogni chiamata al metodo GetEnumerator sull'insieme inizierà una nuova enumerazione.

Nell'esempio riportato di seguito, partendo da una directory specificata, viene utilizzato questo metodo e il metodo EnumerateFiles per enumerare directory e file per file con estensione .txt. Utilizza quindi il metodo ReadLines per leggere ogni riga del file e per visualizzarlo se contiene la parola "Microsoft."


using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        DirectoryInfo diTop = new DirectoryInfo(@"d:\");
        try
        {
            foreach (var fi in diTop.EnumerateFiles())
            {
                try
                {
                    // Display each file over 10 MB;
                    if (fi.Length > 10000000)
                    {
                        Console.WriteLine("{0}\t\t{1}", fi.FullName, fi.Length.ToString("N0"));
                    }
                }
                catch (UnauthorizedAccessException UnAuthTop)
                {
                    Console.WriteLine("{0}", UnAuthTop.Message);
                }
            }

            foreach (var di in diTop.EnumerateDirectories("*"))
            {
                try
                {
                    foreach (var fi in di.EnumerateFiles("*", SearchOption.AllDirectories))
                    {
                        try
                        {
                            // Display each file over 10 MB;
                            if (fi.Length > 10000000)
                            {
                                Console.WriteLine("{0}\t\t{1}",  fi.FullName, fi.Length.ToString("N0"));
                            }
                        }
                        catch (UnauthorizedAccessException UnAuthFile)
                        {
                            Console.WriteLine("UnAuthFile: {0}", UnAuthFile.Message);
                        }
                    }
                }
                catch (UnauthorizedAccessException UnAuthSubDir)
                {
                    Console.WriteLine("UnAuthSubDir: {0}", UnAuthSubDir.Message);
                }
            }
        }
        catch (DirectoryNotFoundException DirNotFound)
        {
            Console.WriteLine("{0}", DirNotFound.Message);
        }
        catch (UnauthorizedAccessException UnAuthDir)
        {
            Console.WriteLine("UnAuthDir: {0}", UnAuthDir.Message);
        }
        catch (PathTooLongException LongPath)
        {
            Console.WriteLine("{0}", LongPath.Message);
        }
    }
}


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4

.NET Framework Client Profile

Supportato in: 4

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft