Hallo!
Ich habe ein Performance-Problem.
Ich muss aus 4 Verzeichnissen ca. 20.000 Files filtern. Das ganze in 2 Stufen, zuerst nach Datum und dann nach dem Namen. Filtern heisst in dem Zusammenhang, dass nur Files die ein bestimmtes Datum haben und deren Name bestimmte Kriterien erfüllt, in eine ArrayList übernommen werden.
Ich bin grade beim Datumsfilter, der in Form einer JComboBox vorliegen wird und ein Datum nur dann enhält, wenn mind. eine Datei mit diesem Datum gefunden wurde.
Mein Problem ist, dass es ziemlich lange Dauert die 20.000 File zu durchforsten. Ich hoffe jemnd kann mir einen Tip geben, wie es schnel lwerden könnte.
Kurze Erklärung:
- sdf ist ein SimpleDateFormatter("yyyyMMdd")
- folders enthält die 4 Verzeichnisse
- temp soll am Ende jedes Datum einmal enthalten.
Ich hatte überlegt, ob ich nicht auf diese Idee ganz verzichte und einfach jedes Datum als Filter zulasse und ggf. eine leere Liste anzeige wenn es keine Dateien zu dem Datum gibt. Leider ergab das auch keine bessere Performance, weil ich dann in meinem FileFilter jede Datei einmal anfassen und im Prinzip die selben Operationen wie oben damit ausführen musste.
Hat jemand eine Idee? Gibt es schon eine Lösung in der Java-API auf die ich nur nicht gekommen bin? Sowas wie einen fertigen Datums-Filter für Dateien oder so?
Dank und Gruß,
Sascha
Ich habe ein Performance-Problem.
Ich muss aus 4 Verzeichnissen ca. 20.000 Files filtern. Das ganze in 2 Stufen, zuerst nach Datum und dann nach dem Namen. Filtern heisst in dem Zusammenhang, dass nur Files die ein bestimmtes Datum haben und deren Name bestimmte Kriterien erfüllt, in eine ArrayList übernommen werden.
Ich bin grade beim Datumsfilter, der in Form einer JComboBox vorliegen wird und ein Datum nur dann enhält, wenn mind. eine Datei mit diesem Datum gefunden wurde.
Mein Problem ist, dass es ziemlich lange Dauert die 20.000 File zu durchforsten. Ich hoffe jemnd kann mir einen Tip geben, wie es schnel lwerden könnte.
Code:
public static HashSet<String> loadData(ArrayList<File> folders) {
HashSet<String> temp = new HashSet<String>();
String date = null;
for (File folder : folders) {
for (File file : folder.listFiles()) {
date = sdf.format(file.lastModified());
temp.add(date);
}
}
return temp;
}
Kurze Erklärung:
- sdf ist ein SimpleDateFormatter("yyyyMMdd")
- folders enthält die 4 Verzeichnisse
- temp soll am Ende jedes Datum einmal enthalten.
Ich hatte überlegt, ob ich nicht auf diese Idee ganz verzichte und einfach jedes Datum als Filter zulasse und ggf. eine leere Liste anzeige wenn es keine Dateien zu dem Datum gibt. Leider ergab das auch keine bessere Performance, weil ich dann in meinem FileFilter jede Datei einmal anfassen und im Prinzip die selben Operationen wie oben damit ausführen musste.
Hat jemand eine Idee? Gibt es schon eine Lösung in der Java-API auf die ich nur nicht gekommen bin? Sowas wie einen fertigen Datums-Filter für Dateien oder so?
Dank und Gruß,
Sascha