Effizientes Abrufen mehrerer Dateitypen mit Directory.GetFiles()
Die Methode Directory.GetFiles()
ist ein praktisches Tool zum Auflisten von Dateien in einem Verzeichnis. Allerdings lässt die integrierte Filterung jeweils nur einen einzigen Dateityp zu. In diesem Artikel werden Lösungen zur Überwindung dieser Einschränkung und zum Abrufen von Dateien, die mehreren Kriterien entsprechen, in einem einzigen Vorgang untersucht.
Die Herausforderung: Filterung mehrerer Dateitypen
Die direkte Verwendung von Directory.GetFiles()
zum Abrufen von Dateien mit mehreren Erweiterungen (z. B. .mp3 und .jpg) ist ohne Problemumgehungen nicht möglich.
Lösungen:
Zwei wirksame Methoden umgehen diese Einschränkung:
1. Nutzung von Directory.EnumerateFiles()
(.NET 4.0 und höher):
Directory.EnumerateFiles()
bietet einen speichereffizienteren Ansatz, insbesondere beim Umgang mit zahlreichen Dateien. Es durchläuft Dateien, ohne sie alle auf einmal in den Speicher zu laden. Anschließend können Sie die Ergebnisse mit LINQ:
<code class="language-csharp">var files = Directory.EnumerateFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg")); </code>
Dieses Code-Snippet ruft alle Dateien in „C:path“ (und seinen Unterverzeichnissen) ab und filtert die Ergebnisse so, dass nur MP3- und JPG-Dateien enthalten sind.
2. Benutzerdefinierte Filterung mit Directory.GetFiles()
:
Für ältere .NET-Versionen oder Situationen, in denen EnumerateFiles()
nicht ideal ist, können Sie GetFiles()
mit anschließender Anwendung eines benutzerdefinierten Filters verwenden:
<code class="language-csharp">var files = Directory.GetFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>
Dadurch wird das gleiche Ergebnis wie mit der vorherigen Methode erzielt, es werden jedoch zunächst alle Dateien in den Speicher geladen.
Leistungsaspekte:
Während beide Methoden das gewünschte Ergebnis erzielen, wird Directory.EnumerateFiles()
aufgrund der Speichereffizienz im Allgemeinen bevorzugt, insbesondere beim Umgang mit großen Verzeichnissen. Directory.GetFiles()
ist möglicherweise für kleinere Verzeichnisse schneller, aber der Speicheraufwand kann bei vielen Dateien erheblich werden. Wählen Sie die Methode, die Leistung und Speichernutzung für Ihre spezifische Anwendung am besten in Einklang bringt.
Das obige ist der detaillierte Inhalt vonWie kann ich Dateien mit mehreren Filtern mit Directory.getFiles () abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!