Kombinieren von Dateifiltern in Directory.GetFiles()
Die Directory.GetFiles()-Methode in .NET bietet eine praktische Möglichkeit, eine Liste von Dateien abzurufen, die einem bestimmten Filter entsprechen. Beim Versuch, mehrere Dateitypen zu filtern, besteht das Standardverhalten jedoch darin, nur Dateien abzurufen, die dem ersten Filter entsprechen.
Trotz versuchter Kombinationen wie „.mp3|.jpg“ und „.mp3;.jpg“ erfasst keine dieser Methoden dies in einem Aufruf. Zwei Dateitypen. Um diese Einschränkung zu umgehen, ziehen Sie die folgenden Alternativen in Betracht:
Für .NET 4.0 und höher:
Implementieren Sie eine LINQ-Abfrage, um die Ergebnisse von Directory.EnumerateFiles() zu filtern, das alle Dateipfade in einem Verzeichnis abruft. Die Abfrage filtert bestimmte Dateierweiterungen (.mp3 und .jpg).
<code class="language-csharp">var files = Directory.EnumerateFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>
Für frühere Versionen von .NET:
Verwenden Sie die Methode Directory.GetFiles(), um Dateien mit einer beliebigen Erweiterung (.) abzurufen, und wenden Sie eine LINQ-Abfrage an, um die Ergebnisse zu filtern.
<code class="language-csharp">var files = Directory.GetFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>
Hinweis: Bitte beachten Sie den Vorschlag in den Kommentaren zur Verwendung der StringContains-Funktion anstelle der EndsWith-Funktion, um die Leistung zu optimieren. Beachten Sie außerdem mögliche Speicherprobleme bei der Verwendung der EnumerateFiles()-Methode, bei denen das zugewiesene Speicherlimit überschritten werden kann, wenn das zugrunde liegende Objekt nicht zuerst freigegeben wird.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Dateifilter in Directory.getFiles () kombinieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!