Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo DirectoryInfo.EnumerateDirectories (String, SearchOption)

 

Data di pubblicazione: ottobre 2016

Restituisce una raccolta enumerabile di informazioni sulla directory che corrisponde 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
Type: System.String

Stringa di ricerca in base alla quale confrontare i nomi delle directory. Questo parametro può contenere una combinazione di caratteri letterali e caratteri jolly (* e ?) validi per un percorso (vedere la sezione Note), ma non le supporta espressioni regolari. Il criterio predefinito è "*" che restituisce tutti i file.

searchOption
Type: System.IO.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.

Valore restituito

Type: System.Collections.Generic.IEnumerable<DirectoryInfo>

Raccolta enumerabile di directory che corrisponde a searchPattern e searchOption.

Exception Condition
ArgumentNullException

searchPattern è null.

ArgumentOutOfRangeException

searchOption non è un valore valido di SearchOption.

DirectoryNotFoundException

Il percorso incapsulato nell’oggetto DirectoryInfo non è valido (ad esempio, si trova in un'unità non mappata).

SecurityException

Il chiamante non dispone dell'autorizzazione richiesta.

searchPattern can be a combination of literal and wildcard characters, but doesn't support regular expressions. The following wildcard specifiers are permitted in searchPattern.

Wildcard specifier

Matches

* (asterisk)

Zero or more characters in that position.

? (question mark)

Zero or one character in that position.

Characters other than the wildcard are literal characters. For example, the string "*t" searches for all names in ending with the letter "t". ". The searchPattern string "s*" searches for all names in path beginning with the letter "s".

The M:System.IO.DirectoryInfo.EnumerateDirectories and M:System.IO.DirectoryInfo.GetDirectories methods differ as follows:

  • When you use M:System.IO.DirectoryInfo.EnumerateDirectories, you can start enumerating the collection of T:System.IO.DirectoryInfo objects before the whole collection is returned.

  • When you use M:System.IO.DirectoryInfo.GetDirectories, you must wait for the whole array of T:System.IO.DirectoryInfo objects to be returned before you can access the array.

Therefore, when you are working with many files and directories, M:System.IO.DirectoryInfo.EnumerateDirectories can be more efficient.

This method pre-populates the values of the following T:System.IO.DirectoryInfo properties:

The returned collection is not cached; each call to the M:System.Collections.Generic.IEnumerable`1.GetEnumerator method on the collection will start a new enumeration.

The following example, starting from a specified directory, uses this method and the M:System.IO.DirectoryInfo.EnumerateFiles(System.String,System.IO.SearchOption) method to enumerate the files and directories within the start directory and display details of any files over 10 MB in size.

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);
        }
    }
}

Universal Windows Platform
Disponibile da 10
.NET Framework
Disponibile da 4.0
Silverlight
Disponibile da 4.0
Torna all'inizio
Mostra: