LINQ und Dateiverzeichnisse (C#)LINQ and File Directories (C#)

Viele Dateisystemvorgänge sind im Wesentlichen Abfragen und sind deshalb für die LINQ-Vorgehensweise gut geeignet.Many file system operations are essentially queries and are therefore well-suited to the LINQ approach.

Bitte beachten Sie, das die Abfragen in diesem Abschnitt nichtdestruktiv sind.Note that the queries in this section are non-destructive. Sie werden nicht verwendet, um den Inhalt der ursprünglichen Dateien und Ordner zu ändern.They are not used to change the contents of the original files or folders. Dies entspricht der Regel, nach der Abfragen keine Nebeneffekte haben sollen.This follows the rule that queries should not cause any side-effects. Allgemein gilt, dass jeder Code (einschließlich Abfragen, die Operatoren zum Erstellen/Aktualisieren/Löschen ausführen), der Quelldaten modifiziert, von Code getrennt sein sollte, der Daten lediglich abfragt.In general, any code (including queries that perform create / update / delete operators) that modifies source data should be kept separate from the code that just queries the data.

Dieser Abschnitt enthält die folgenden Themen:This section contains the following topics:

How to: Query for Files with a Specified Attribute or Name (C#) (Vorgehensweise: Abfragen von Dateien mit einem angegebenen Attribut oder Namen (C#))How to: Query for Files with a Specified Attribute or Name (C#)
Hier erfahren Sie, wie Sie nach Dateien suchen, indem Sie eine oder mehrere Eigenschaften des Objekts FileInfo betrachten.Shows how to search for files by examining one or more properties of its FileInfo object.

Vorgehensweise: Gruppieren von Dateien nach Erweiterung (LINQ) (C#)How to: Group Files by Extension (LINQ) (C#)
Hier erfahren Sie, wie Sie Gruppen des Objekts FileInfo nach deren Dateinamenerweiterung zurückgeben.Shows how to return groups of FileInfo object based on their file name extension.

Vorgehensweise: Abfragen der Gesamtzahl an Bytes in einem Ordnersatz (LINQ) (C#)How to: Query for the Total Number of Bytes in a Set of Folders (LINQ) (C#)
Hier erfahren Sie, wie Sie die Gesamtzahl von Bytes in allen Dateien einer angegebenen Verzeichnisstruktur zurückgeben.Shows how to return the total number of bytes in all the files in a specified directory tree.

Vorgehensweise: Vergleichen des Inhalts von zwei Ordnern (LINQ) (C#)How to: Compare the Contents of Two Folders (LINQ) (C#)s
Hier erfahren Sie, wie Sie alle Dateien, die sich ein zwei angegebenen Ordnern befinden, zurückgeben können; ebenso erfahren Sie, wie Sie die Dateien, die sich nur in einem der zwei Ordner befinden, zurückgeben können.Shows how to return all the files that are present in two specified folders, and also all the files that are present in one folder but not the other.

How to: Query for the Largest File or Files in a Directory Tree (LINQ) (C#) (Vorgehensweise: Abfragen der größten Datei oder der größten Dateien in einer Verzeichnisstruktur (LINQ) (C#))How to: Query for the Largest File or Files in a Directory Tree (LINQ) (C#)
Hier erfahren Sie, wie Sie die größte oder kleinste Datei oder eine angegebene Anzahl von Dateien in einer Verzeichnisstruktur zurückgeben können.Shows how to return the largest or smallest file, or a specified number of files, in a directory tree.

Vorgehensweise: Abfragen von Dateiduplikaten in einer Verzeichnisstruktur (LINQ) (C#)How to: Query for Duplicate Files in a Directory Tree (LINQ) (C#)
Hier erfahren Sie, wie Sie die Dateien nach Dateinamen gruppieren können, die an mehr als einer Stelle in einer angegebenen Verzeichnisstruktur vorkommen.Shows how to group for all file names that occur in more than one location in a specified directory tree. Ebenfalls lernen Sie, wie sie komplexere Vergleiche mit einer benutzerdefinierten Vergleichsfunktion durchführen können.Also shows how to perform more complex comparisons based on a custom comparer.

Vorgehensweise: Abfragen des Inhalts von Dateien in einem Ordner (LINQ) (C#)How to: Query the Contents of Files in a Folder (LINQ) (C#)
Hier erfahren Sie, wie Sie Ordner in einer Struktur durchlaufen, jede Datei öffnen und die Inhalte der Datei abfragen können.Shows how to iterate through folders in a tree, open each file, and query the file's contents.

KommentareComments

Das Erstellen einer Datenquelle, die die Inhalte des Dateisystems angemessen repräsentieren, kommt mit einer gewissen Komplexität.There is some complexity involved in creating a data source that accurately represents the contents of the file system and handles exceptions gracefully. Die Beispiele in diesem Abschnitt geben Ihnen einen ersten Überblick über FileInfo-Objekte, der alle Dateien in einem angegebenen Stammordner mit all seinen Unterordnern repräsentiert.The examples in this section create a snapshot collection of FileInfo objects that represents all the files under a specified root folder and all its subfolders. Der tatsächliche Zustand jedes FileInfo verändert sich möglicherweise in der Zeit zwischen Beginn und Ende der Ausführung einer Abfrage.The actual state of each FileInfo may change in the time between when you begin and end executing a query. Sie können beispielsweise eine Liste von FileInfo-Objekten erstellen, um diese als Datenquelle zu verwenden.For example, you can create a list of FileInfo objects to use as a data source. Wenn Sie versuchen, auf die Eigenschaft Length einer Abfrage zuzugreifen, versucht das FileInfo-Objekt, auf das Dateisystem zuzugreifen, um den Wert von Length zu aktualisieren.If you try to access the Length property in a query, the FileInfo object will try to access the file system to update the value of Length. Wenn die Datei nicht mehr existiert, erhalten Sie eine FileNotFoundException in Ihrer Abfrage, obwohl Sie keine direkte Abfrage an das Dateisystem vornehmen.If the file no longer exists, you will get a FileNotFoundException in your query, even though you are not querying the file system directly. Einige Abfragen in diesem Bereich verwenden eine getrennte Methode, die diese bestimmten Ausnahmen in gewissen Fällen verarbeitet.Some queries in this section use a separate method that consumes these particular exceptions in certain cases. Des Weiteren können Sie Ihre Datenquelle auf dem neuesten Stand halten, indem Sie den FileSystemWatcher verwenden.Another option is to keep your data source updated dynamically by using the FileSystemWatcher.

Siehe auchSee Also

LINQ to Objects (C#)LINQ to Objects (C#)