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.txt
und ../Test4/sample-spiffy.txt
aber nicht ../Test3/sample2.blah
oder ../Test44/sample2.txt
)
Ich habe einen Blick darauf geworfen org.apache.commons.io.filefilter.WildcardFileFilter
und 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)