Ich bin eine Windows-Anwendung in Visual Studio 2012 in C# und. NET 4.0 erstellen.Mehrere Wildcard-Verzeichnis/Dateisuche für beliebige Verzeichnisstruktur in C# .net
Eine der Funktionen des Programms besteht darin, nach allen Dateien zu suchen, die bestimmte Suchkriterien erfüllen, die normalerweise (aber nicht immer) Platzhalter enthalten.
Die Suchkriterien sind zur Laufzeit unbekannt. Es wird aus einer Excel-Tabelle importiert.
Mögliche Suchkriterien können, gehören die folgenden:
- Exact Weg
- "C: \ temp \ directory1 \ directory2 \ somefile.txt"
- Path, mit Wildcards in der Dateiname:
- "C: \ temp \ Verzeichnis1 \ Verzeichnis2 *. *"
- Dateiname mit Platzhalter im Pfad:
- "C: \ temp * \ * Verzeichnis \ somefile.txt"
- Dateinamen und Pfad mit Platzhalter:
- " C: \ temp \ * \ * \ *. * "
- Alle oben genannten mit beliebiger Verzeichnisstruktur:
- "C: \ temp \ dir * 1 \ dir * \ anotherdir \ * \ * eine andere \ file * .txt"
- "C: \ te * \ * \ somefile.txt"
- „C :.
IEnumerable<string> matchingFilePaths = System.IO.Directory.EnumerateFiles(@"C:\", selectedItemPath[0], System.IO.SearchOption.AllDirectories);
jedoch diese nur: \ temp \ * tory1 \ dire * 2 \ * \ * \ * \ * \ * *“
ich habe Directory.EnumerateFiles
zu verwenden versucht arbeitet mit Fall 2 oben. Der Versuch, Directory.EnumerateFiles
mit Platzhaltern in den Ordnernamen zu verwenden, verursacht eine "Illegal Character" -Ausnahme.
Ich hoffe, es gibt ein One-Liner in .net kann ich verwenden, um diese Datei suchen zu tun. Die Anzahl der Platzhalter und die Tiefe der Verzeichnisstruktur ist zur Laufzeit unbekannt, und es ist denkbar, dass die Suche möglicherweise hundert Ordner tief gehen muss, wobei jeder Ordner eine unbekannte Anzahl von Platzhaltern enthält. (Dies ist der Kern des Problems). Der Versuch, eine wahnsinnige Anzahl verschachtelter For-Schleifen zu vermeiden.
Ich lese die Lösungen here, aber das scheint nicht für eine beliebige Ordnerstruktur zu arbeiten.
Ich fürchte, .net hat API für Ihre Anforderung. Sie müssen es selbst schreiben. – RajN
Es ist klar, dass die Frage, die Sie ansprechen, einen Platz hat, um Sie zu beginnen, und wenn Sie das selbst tun wollten, das das als eine Referenz verwendend, konnten Sie zweifellos. Fordern Sie uns auf, diese Arbeit ohne besondere Anstrengung für Sie zu erledigen? – caesay