Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

DirectoryInfo.EnumerateDirectories-Methode: (String, SearchOption)

.NET Framework (current version)
 

Veröffentlicht: Oktober 2016

Gibt eine aufzählbare Auflistung von Verzeichnisinformationen zurück, die einem angegebenen Suchmuster und einer angegebenen Option zum Durchsuchen von Unterverzeichnissen entspricht.

Namespace:   System.IO
Assembly:  mscorlib (in mscorlib.dll)

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

Parameter

searchPattern
Type: System.String

Die Suchzeichenfolge für die Überprüfung der Namen von Verzeichnissen auf Übereinstimmungen. Dieser Parameter kann eine Kombination aus gültigem Literalpfad und Platzhalterzeichen (* und ?) enthalten (siehe Hinweise), unterstützt jedoch keine regulären Ausdrücke. Das Standardmuster ist "*", wobei alle Dateien zurückgegeben werden.

searchOption
Type: System.IO.SearchOption

Einer der Enumerationswerte, der angibt, ob nur das aktuelle Verzeichnis oder auch alle Unterverzeichnisse durchsucht werden sollen. Der Standardwert ist TopDirectoryOnly.

Rückgabewert

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

Eine aufzählbare Auflistung von Verzeichnissen, die searchPattern und searchOption entspricht.

Exception Condition
ArgumentNullException

searchPattern ist null.

ArgumentOutOfRangeException

searchOption ist kein gültiger SearchOption-Wert.

DirectoryNotFoundException

Der im DirectoryInfo-Objekt gekapselte Pfad ist ungültig (z. B. befindet er sich auf einem nicht zugeordneten Laufwerk).

SecurityException

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

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

Universelle Windows-Plattform
Verfügbar seit 10
.NET Framework
Verfügbar seit 4.0
Silverlight
Verfügbar seit 4.0
Zurück zum Anfang
Anzeigen: