.net DirectoryInfo-Platzhaltermuster zum Ausschließen

8

Der folgende Methodenaufruf gibt alle XML-Dateien im angegebenen Verzeichnis zurück.

%Vor%

Ich möchte alle XML-Dateien in dem Verzeichnis abrufen, in dem der Dateiname nicht mit "_update.xml" endet

zum Beispiel .... wenn ich die folgenden Dateien habe

%Vor%

Dann möchte ich einen Anruf, der nur zurückkehrt:

%Vor%

Ist das möglich?

    
JL. 13.01.2010, 19:39
quelle

2 Antworten

13

Ich glaube nicht, dass Sie Such-Wildcards für diese Art von Ausschluss verwenden können. Sie können die Liste der Dateien jedoch nachträglich filtern. Mit LINQ ist das ganz einfach. Wenn Ihr Verzeichnis jedoch sehr groß ist, kann dies zu einer umfangreichen Verarbeitung der Dateiliste im Speicher führen.

Versuchen Sie:

%Vor%     
LBushkin 13.01.2010, 19:42
quelle
5

Nicht mit einer Platzhalterzuordnung wie dieser, nein. Sie müssen diejenigen entfernen, die Sie danach nicht möchten.

Beachten Sie, dass Directory.GetFiles("*.xml") tatsächlich so interpretiert wird, dass alle Dateien mit den Erweiterungen übereinstimmen, beginnend mit xml , nicht nur gleich xml - eine Eigenart der Methode! Daher müssen Sie möglicherweise auch andere Dateien auf ähnliche Weise ausschließen.

Auf dieser Seite von MSDN wird das folgendermaßen erklärt:

  

Bei Verwendung des Sternchen-Platzhalterzeichens in einem searchPattern (z. B. " .txt") hängt das übereinstimmende Verhalten von der Länge der angegebenen Dateierweiterung ab. Ein searchPattern mit einer Dateierweiterung von genau drei Zeichen gibt Dateien mit einer Erweiterung von drei oder mehr Zeichen zurück, wobei die ersten drei Zeichen mit der im searchPattern angegebenen Dateierweiterung übereinstimmen. Ein searchPattern mit einer Dateierweiterung von einem, zwei oder mehr als drei Zeichen gibt nur Dateien mit genau dieser Länge zurück, die mit der im searchPattern angegebenen Dateierweiterung übereinstimmen. Bei Verwendung des Fragezeichen-Platzhalterzeichens gibt diese Methode nur Dateien zurück, die der angegebenen Dateierweiterung entsprechen. Wenn beispielsweise zwei Dateien in einem Verzeichnis "Datei1.txt" und "Datei1.txtother" eingegeben werden, gibt ein Suchmuster von "Datei? .txt" nur die erste Datei zurück, während ein Suchmuster von "Datei . txt "gibt beide Dateien zurück.

    
David M 13.01.2010 19:42
quelle

Tags und Links