LINQ und Dateiverzeichnisse
Bei vielen Dateisystemvorgängen handelt es sich im Wesentlichen um Abfragen. Sie sind deshalb für den LINQ-Ansatz gut geeignet.
Tipp
Wenn Sie programmgesteuerte Abfragen in den Inhalten mehrerer Arten von Dokumenten und Dateien ausführen möchten, empfiehlt es sich, die Windows-Desktopsuche zu verwenden. Obwohl es derzeit nicht mit LINQ abgefragt werden kann, bietet es einen umfassenden Indexdienst, der die Komplexität des Dateisystems effektiv verwaltet.
Beachten Sie, dass die Abfragen in diesem Abschnitt nicht destruktiv sind. Sie werden nicht verwendet, um den Inhalt der ursprünglichen Dateien oder Ordner zu ändern. Dies folgt der Regel, dass Abfragen keine Nebeneffekte verursachen sollten. Im Allgemeinen sollte jeder Code (einschließlich Abfragen, die Operatoren erstellen/aktualisieren/löschen), der Quelldaten modifiziert, von Codes, die Daten lediglich abfragen, getrennt werden.
Dieser Abschnitt behandelt folgende Themen:
Gewusst wie: Abfragen von Dateien mit einem angegebenen Attribut oder Namen
Zeigt an, wie durch das Prüfen einer oder mehrerer Eigenschaften des FileInfo-Objekts nach Dateien gesucht wird.Gewusst wie: Gruppieren von Dateien nach Erweiterung (LINQ)
Zeigt an, wie Gruppen von FileInfo-Objekten auf Grundlage ihrer Dateinamenerweiterung zurückgegeben werden.Gewusst wie: Abfragen der Gesamtzahl an Bytes in einem Ordnersatz (LINQ)
Zeigt an, wie die Gesamtanzahl an Bytes in allen Dateien einer angegebenen Verzeichnisstruktur zurückgegeben wird.Gewusst wie: Vergleichen des Inhalts von zwei Ordnern (LINQ)
Zeigt an, wie alle Dateien, die in zwei angegebenen Ordern enthalten sind, und auch alle anderen Dateien, die in einem Ordner, aber nicht in dem anderen enthalten sind, zurückgegeben werden.Gewusst wie: Abfragen der größten Datei oder der größten Dateien in einer Verzeichnisstruktur (LINQ)
Zeigt an, wie die größte oder die kleinste Datei oder eine angegebene Anzahl von Dateien in einer Verzeichnisstruktur zurückgegeben wird.Gewusst wie: Abfragen von Dateiduplikaten in einer Verzeichnisstruktur (LINQ)
Zeigt an, wie alle Dateinamen, die in mehr als einem Verzeichnis auftreten, in einer Verzeichnisstruktur gruppiert werden. Zeigt auch an, wie komplexere Vergleiche auf Grundlage eines benutzerdefinierten Vergleichs ausgeführt werden.Gewusst wie: Abfragen des Inhalts von Dateien in einem Ordner (LINQ)
Zeigt an, wie Ordner in einer Struktur durchlaufen werden, jede Datei geöffnet und der Inhalt der Datei abgefragt wird.
Kommentare
Das Erstellen einer Datenquelle, die genau die Inhalte des Dateisystems wiedergibt und Ausnahmen ordnungsgemäß behandelt, ist recht aufwändig. Die Beispiele in diesem Abschnitt erstellen eine Momentaufnahmeauflistung von FileInfo-Objekten, die alle Dateien eines angegebenen Stammordners und all seine Unterordner darstellt. Der Zustand jedes FileInfo-Objekts kann sich in der Zeit, in der Sie eine Abfrage beginnen und beenden, verändern. Zum Beispiel können Sie eine Liste von FileInfo-Objekten erstellen, die als Datenquelle verwendet werden soll. Beim Versuch, in einer Abfrage auf die Length-Eigenschaft zuzugreifen, wird das FileInfo-Objekt versuchen, auf das Dateisystem zuzugreifen, um den Wert von Length zu aktualisieren. Wenn die Datei nicht länger besteht, werden Sie in Ihrer Abfrage eine FileNotFoundException erhalten, auch wenn Sie das Dateisystem nicht direkt abfragen. Einige Abfragen in diesem Abschnitt nutzen eine separate Methode, die diese bestimmten Ausnahmen in gewissen Fällen abfängt. Eine andere Möglichkeit wäre, Ihre Datenquelle dynamisch durch Verwenden von FileSystemWatcher aktualisiert zu halten.