Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Directory.EnumerateFiles-Methode (String, String, SearchOption)

.NET Framework 4.6 and 4.5

Gibt eine aufzählbare Auflistung von Dateinamen zurück, die einem Suchmuster in einem angegebenen Pfad entsprechen. Optional werden Unterverzeichnisse durchsucht.

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

public static IEnumerable<string> EnumerateFiles(
	string path,
	string searchPattern,
	SearchOption searchOption
)

Parameter

path
Typ: System.String
Der relative oder absolute Pfad zu durchsuchende Verzeichnis. Bei dieser Zeichenfolge wird die Groß-/Kleinschreibung nicht berücksichtigt.
searchPattern
Typ: System.String
Die Suchzeichenfolge für die Überprüfung der Namen von Dateien in path auf Übereinstimmungen. Dieser Parameter kann eine Kombination von gültigen literalen Pfads und Platzhalter(* und?) Zeichen enthält (siehe Hinweise), unterstützt jedoch nicht reguläre Ausdrücke.
searchOption
Typ: 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

Typ: System.Collections.Generic.IEnumerable<String>
Eine aufzählbare Auflistung der vollständigen Namen (einschließlich Pfade) für die Dateien im Verzeichnis, das von path angegebenen wird und der angegebene Suchmuster und Option entsprechen.

AusnahmeBedingung
ArgumentException

path ist eine Zeichenfolge der Länge 0, der Pfad enthält nur Leerzeichen oder enthält ungültige Zeichen. Sie können für ungültige Zeichen abfragen, indem Sie die GetInvalidPathChars-Methode.

– oder –

searchPattern enthält kein gültiges Muster.

ArgumentNullException

path ist null.

- oder -

searchPattern ist null.

ArgumentOutOfRangeException

searchOption ist kein gültiger SearchOption-Wert.

DirectoryNotFoundException

path ist ungültig. Dies ist z. B. der Fall, wenn auf ein nicht zugeordnetes Laufwerk verwiesen wird.

IOException

path ist ein Dateiname.

PathTooLongException

Der angegebene Pfad, Dateiname oder die Kombination aus diesen überschreitet die vom System vorgegebene Höchstlänge. Beispielsweise dürfen auf Windows-Plattformen Pfade nicht länger als 247 Zeichen und Dateinamen nicht länger als 259 Zeichen sein.

SecurityException

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

UnauthorizedAccessException

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

searchPattern kann eine Kombination des Literals und Platzhalterzeichen sein, unterstützt aber keine regulären Ausdrücke. Die folgenden Bezeichner für Platzhalter sind in searchPattern zulässig.

Platzhalterspezifizierer

Übereinstimmungen

* (Sternchen)

0 oder mehr Zeichen an dieser Stelle.

? (Fragezeichen)

Null oder ein Zeichen an dieser Position.

Zeichen als dem Platzhalter sind Literalzeichen. Mit der searchPattern-Zeichenfolge "*t" werden z. B. alle Namen in path gesucht, die auf den Buchstaben "t" enden. Mit der searchPattern-Zeichenfolge "s*" werden alle Namen in path gesucht, die mit dem Buchstaben "s" beginnen.

searchPattern kann nicht in beiden Punkte beenden ("." enthalten.) oder zwei Punkte (". . ") gefolgt von DirectorySeparatorChar oder AltDirectorySeparatorChar trotzdem kann es alle unzulässigen Zeichen enthalten. Sie können für ungültige Zeichen abfragen, indem Sie die GetInvalidPathChars-Methode.

Mit dem path-Parameter können Sie relative Pfadinformationen angeben. Relative Pfadinformationen werden als relativ zum aktuellen Arbeitsverzeichnis interpretiert, das Sie mit der GetCurrentDirectory-Methode bestimmen können.

Die EnumerateFiles-Methode und die GetFiles-Methode unterscheiden sich wie folgt: Wenn Sie EnumerateFiles verwenden, können Sie anfangen, die Auflistung von Namen aufzulisten, bevor die ganze Auflistung zurückgegeben wird; wenn Sie GetFiles verwenden, müssen Sie warten, bis das ganze Array von Namen zurückgegeben wird, bevor Sie auf das Array zugreifen können. Wenn Sie daher mit vielen Dateien und Verzeichnissen arbeiten, kann EnumerateFiles effizienter sein.

Die zurückgegebene Auflistung wird nicht zwischengespeichert; jeder Anruf von GetEnumerator für die Auflistung startet eine neue Enumeration.

Im folgenden Beispiel wird gezeigt, wie alle Textdateien in einem Verzeichnis und in dessen Unterverzeichnissen abruft und verschiebt es auf ein neues Verzeichnis. Nachdem die Dateien verschoben werden, sind sie nicht mehr im ursprünglichen Verzeichnissen.


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


Im folgenden Beispiel werden alle Dateien im angegebenen Verzeichnis rekursiv aufgelistet, die die Erweiterung .txt haben, und alle Zeilen der Dateien werden gelesen. Wenn eine Zeile die Zeichenfolge "Microsoft" enthält, wird sie angezeigt.


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

class Program
{
    static void Main(string[] args)
    {
        try
        {
            var files = from file in Directory.EnumerateFiles(@"c:\", "*.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("{0}\t{1}", f.File, f.Line);
            }
			Console.WriteLine("{0} files found.", files.Count().ToString());
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4

.NET Framework Client Profile

Unterstützt 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 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft