2013-02-19 2 views
5

Wie finde ich beide Dateitypen * .gif und * .jpg mit DirectoryInfo.GetFiles Funktion in C#?DirectoryInfo.GetFiles, Wie bekomme ich verschiedene Dateitypen in C#

Wenn ich versuche, diesen Code ein: "Ungültige Zeichen in Pfad"

string pattern = "*.gif|*.jpg"; 
FileInfo[] files = dir.GetFiles(pattern); 

Die Ausnahme ist geworfen.

+2

haben einen Blick auf diese, vielleicht ist es Ihnen zu helfen. http://stackoverflow.com/questions/163162/can-you-call-directory-getfiles-with-multiple-filters – Belial09

+1

Versuchen Sie diesen Link: http://www.beansoftware.com/ASP.NET- FAQ/Multiple-Filters-Directory.GetFiles-Methode.aspx – Pandian

Antwort

1

Sie können nicht mehrere Muster in der Abfrage angeben, Sie müssen eine Liste von Erweiterungen haben und GetFiles für jedes anrufen. Zum Beispiel ...

var exts = new string[] { "*.gif", "*.jpg" }; 
foreach (var ext in exts) { 
    var files = dir.GetFiles(ext); 
} 

könnten Sie die vollständige Wildcard von *.* verwenden, um alle Dateien auf einmal zu bekommen und filtern sie manuell, aber die Leistung hierfür könnte ein Problem sein, je nach Verzeichnis und dessen Inhalt.

6

gibt es keine Möglichkeit zu einem String-Muster zu kombinieren, müssen Sie speichern Muster in einer Liste:

var extensions = new[] { "*.gif", "*.jpg" }; 
var files = extensions.SelectMany(ext => dir.GetFiles(ext)); 
+0

Schön und einfach. Meine Lieblingsoption. – Tillito

0

Sie können als hinzufügen beliebig viele Erweiterungen in der where-Klausel des folgenden Codes.

DirectoryInfo directoryInfo = new DirectoryInfo(filePath); 
FileInfo[] files = directoryInfo.GetFiles().Where(f => f.Extension == ".gif" || f.Extension == ".jpg").ToArray(); 
Verwandte Themen