X
xhi2018
Gast
Hallo,
ich muß in meinem Programm unterhalb einem Verzeichnis nach bestimmten Dateien suchen. Die Dateinamen haben alle den selben Namen lediglich die Extension ist unterschiedlich. Kleines Beispiel - es müssen alle Dateien mit dem Namen
gefunden werden die irgendwo unterhalb einem bestimmten Verzeichnis liegen. Das hier funktioniert soweit schon mal wie von mir gewünscht. Weil ich jetzt nicht gerade der Experte bin wollt ich hier mal fragen wie ihr diese Aufgabe lösen würdet und habe ich vielleicht noch irgendwo was vergessen bzw. könnte besser/effizienter/schneller gemacht werden ???:L
und der dazu passende FilenameFilter
Beim Erzeugen des Filters wird dann der zu suchende Dateiname angegeben
Ich danke schon mal sehr für Eure Hilfe und Tipps!!
ich muß in meinem Programm unterhalb einem Verzeichnis nach bestimmten Dateien suchen. Die Dateinamen haben alle den selben Namen lediglich die Extension ist unterschiedlich. Kleines Beispiel - es müssen alle Dateien mit dem Namen
Code:
foo.properties, foo.txt, foo.xml, foo.ini, ...
Java:
public Collection<File> traverse( final File f, final FilenameFilter filter, final boolean recurse) {
Collection<File> result = new ArrayList<File>();
if (f.isDirectory()) {
File[] entries = f.listFiles();
for (File entry : entries) {
if (filter == null || filter.accept(f, entry.getName())) {
result.add(entry);
}
if (recurse && entry.isDirectory()) {
result.addAll( traverse(entry, filter, recurse) );
}
}
}
return result;
}
Java:
public class PropertyFileNameFilter implements FilenameFilter {
private final Collection<String> fileNamesToMatch;
public PropertyFileNameFilter(String fileName) {
fileNamesToMatch = new ArrayList<String>();
fileNamesToMatch.add(fileName + ".properties");
fileNamesToMatch.add(fileName + ".txt");
fileNamesToMatch.add(fileName + ".xml");
// usw. usw.
}
public boolean accept(File dir, String name) {
return fileNamesToMatch.contains(name);
}
Java:
FilenameFilter propertyFileFilter = new PropertyFileNameFilter("foo");