Heim > Backend-Entwicklung > C++ > Wie kann ich Dateien mit mehreren Filtern mit Directory.getFiles () abrufen?

Wie kann ich Dateien mit mehreren Filtern mit Directory.getFiles () abrufen?

Barbara Streisand
Freigeben: 2025-01-26 19:16:11
Original
581 Leute haben es durchsucht

How Can I Retrieve Files with Multiple Filters Using Directory.GetFiles()?

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:

filtern
<code class="language-csharp">var files = Directory.EnumerateFiles("C:\path", "*.*", SearchOption.AllDirectories)
                     .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg")); </code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage