Verwenden von Directory.GetFiles mit regulärem Filter

7

Ich habe einen Ordner mit zwei Dateien:

  • Awesome.File.20091031_123002.txt
  • Awesome.File.Summary.20091031_123152.txt

Darüber hinaus verarbeitet eine Drittanbieter-App die Dateien wie folgt:

  • Liest eine folderPath und eine searchPattern aus einer Datenbank
  • Führt Directory.GetFiles(folderPath, searchPattern) aus, verarbeitet alle Dateien, die dem Filter entsprechen, und verschiebt die Dateien anschließend in einen Archivordner.

Es stellt sich heraus, dass ich meine zwei Dateien in verschiedene Archivordner verschieben muss, also muss ich sie separat behandeln, indem ich verschiedene searchPatterns zur Verfügung stelle, um sie einzeln auszuwählen. Bitte beachten Sie, dass ich die App von Drittanbietern nicht ändern kann, aber ich kann die Ziele von searchPattern und datei in meiner Datenbank ändern.

Mit searchPattern kann ich Awesome.File.20091031_123002.txt auswählen, ohne Awesome.File.Summary.20091031_123152.txt ?

    
Juliet 03.11.2009, 20:18
quelle

5 Antworten

8
  

Awesome.File. ???????? _ ??????. txt

Das Fragezeichen (?) dient als Platzhalter für einzelne Zeichen.

    
Joel Coehoorn 03.11.2009, 20:22
quelle
9

Wenn Sie LINQ verwenden würden, dann ...

%Vor%     
Dve 03.11.2009 20:56
quelle
6

Ich wollte meine dürftigen linq Fähigkeiten hier versuchen ... Ich bin mir sicher, dass es eine elegantere Lösung gibt, aber hier ist meine:

%Vor%

Dies setzt voraus, dass sich außer den beiden Dateien keine anderen Dateien im Verzeichnis befinden. Sie können das Muster hier jedoch an Ihre Anforderungen anpassen (z. B. "Awesome.File" zum Musterstart hinzufügen).

Wenn Sie die Sammlung von jedem iterieren, sollten Sie bekommen, was Sie brauchen.

    
Todd Richardson 03.11.2009 20:44
quelle
5

Laut der Dokumentation unterstützt searchPattern nur die * **** und ? Platzhalter. Sie müssten Ihren eigenen Regex-Filter schreiben, der die Ergebnisse von Directory.GetFiles übernimmt und weitere Filterlogik anwendet.

    
pmarflee 03.11.2009 20:23
quelle
0

Wenn Sie Linq nicht verwenden möchten, hier ist ein Weg.

Öffentlicher Unter-FileChecker (ByVal filePath als String)

%Vor%     
Shivashish 16.10.2014 20:38
quelle

Tags und Links