[FIXED] Wie finde ich Dateien, die mit einer Platzhalterzeichenfolge in Java übereinstimmen?

Ausgabe

Das sollte wirklich einfach sein. Wenn ich einen String wie diesen habe:

../Test?/sample*.txt

Was ist dann ein allgemein akzeptierter Weg, um eine Liste von Dateien zu erhalten, die diesem Muster entsprechen? (z. B. sollte es passen ../Test1/sample22b.txtund ../Test4/sample-spiffy.txtaber nicht ../Test3/sample2.blahoder ../Test44/sample2.txt)

Ich habe einen Blick darauf geworfen org.apache.commons.io.filefilter.WildcardFileFilterund es scheint das richtige Tier zu sein, aber ich bin mir nicht sicher, wie ich es verwenden soll, um Dateien in einem relativen Verzeichnispfad zu finden.

Ich nehme an, ich kann in der Quelle nach ant suchen, da sie Wildcard-Syntax verwendet, aber mir muss hier etwas ziemlich Offensichtliches fehlen.

( Bearbeiten : Das obige Beispiel war nur ein Beispielfall. Ich suche nach einer Möglichkeit, allgemeine Pfade mit Platzhaltern zur Laufzeit zu analysieren. Ich habe anhand des Vorschlags von mmyers herausgefunden, wie es geht, aber es ist irgendwie nervig. Ganz zu schweigen davon Die Java-JRE scheint einfache Platzhalter in den Hauptargumenten (String[]-Argumente) automatisch aus einem einzelnen Argument zu analysieren, um mir Zeit und Ärger zu “sparen” … Ich bin nur froh, dass ich keine Nicht-Datei-Argumente in hatte mischen.)

Lösung

Betrachten Sie DirectoryScanner von Apache Ant:

DirectoryScanner scanner = new DirectoryScanner();
scanner.setIncludes(new String[]{"**/*.java"});
scanner.setBasedir("C:/Temp");
scanner.setCaseSensitive(false);
scanner.scan();
String[] files = scanner.getIncludedFiles();

Sie müssen auf ant.jar verweisen (~ 1,3 MB für ant 1.7.1).


Beantwortet von –
Mischa


Antwort geprüft von –
Mildred Charles (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like