Langsame Dateisuche

Simon119955

Mitglied
Hallo,

ich habe folgendes Problem:
In einem Programm von mir will ich bei jedem Start die Festplatte nach Dateien namens "Setting.txt" durchsuchen und aus den Funden dann die Richtige heraussuchen, aus der weitere Einstellungen für das Programm entnommen werden können. Wenn sie nicht existiert, öffnet sich ein weiteres Fenster, in dem diese Datei erstellt und konfiguriert werden kann usw. Das tut aber nichts zur Sache.

Bis jetzt funktioniert alles wie es soll, aber die Dateisuche dauert sehr lang! Alleine einen Ordner mit ca. 1 GB Größe zu durchsuchen dauert ungefähr 3 Sekunden, wenn ich die komplette Festplatte durchsuchen lasse, zieht sich der Vorgang dann auf fast eine halbe Stunde, und das ist bei jedem Programmstart ja sehr nervig.
Und da ja z.B. die Standardsuche von Vista nur wenige Sekunden braucht um Dateien auf der Festplatte zu finden, wollte ich mal fragen, ob es da nicht eine schnellere Möglichkeit gibt, bzw. ob ich nicht komplett falsch an die Sache herangehe :D :)

Hier meine bisherige Methode zur Dateisuche:

Java:
public ArrayList<File> searchFile(File dir, String find) {

	File[] files = dir.listFiles();
	ArrayList<File> matches = new ArrayList<File> ();
	if (files != null) {
		for (int i = 0; i < files.length; i++) {
			if (files[i].getName().equalsIgnoreCase(find)) { 
				matches.add(files[i]);
			}
			if (files[i].isDirectory()) {
				matches.addAll(searchFile(files[i], find)); 
			}
		}
	}
	return matches;
}

mfg
 

taaz

Mitglied
Hallo Simon,

ich kann dir leider nicht direkt zum Problem weiterhelfen.
Allerdings finde ich es merkwürdig, dass nach einer programmspezifischen (so wie es sich anhört) Config-Datei der ganze Rechner durchsucht wird.
Reicht es nicht, wenn diese Config-Datei im Programmverzeichnis liegt und dort einfach versucht wird zu öffnen?

lg
taaz
 

faetzminator

Gesperrter Benutzer
Wenn die Datei schon irgendwo liegen soll, dann würde ich mir diese Datei(en) auch bei Beendigung des Programms merken. Bei den folgenden Starts muss dann nur noch geprüft werden, ob diese Datei(en) noch existiert. Allenfalls kann man immer noch im Hintergrund nach weiteren Dateien suchen.
 

Simon119955

Mitglied
Naja, so ein großes Projekt ist das nicht, es besteht eigentlich nur aus einer ausführbaren Datei, einer Setting Datei und ein paar einzelnen Textdokumenten mit Highscorelisten (Es handelt sich um ein Programm mit dem Zeiten genommen werden können).
Ich weiß also in dem Sinne gar nicht, wo die Dateien alle liegen, prinzipiell kann der Benutzer sie überall haben, den Standort des eigentlichen Programms brauch ich nicht und die Pfade zu den Highscores sind in der Settingdatei dokumentiert, diese ist also die einzige, deren Standort ich brauche.

Wie merke ich mir denn die Datei nach Beendigung?
 

faetzminator

Gesperrter Benutzer
Da könnten dir z.B. [c]Preferences[/c] weiterhelfen. Aber warum gibst du nicht einfach vor, dass sich die Datei am [c]user.dir[/c], [c]user.home[/c] o.ä. zu befinden hat?
 

Simon119955

Mitglied
Ah ja, Preferences klingt interessant, ich stöber mal etwas in der API...

Es wäre aber trotzdem interessant zu wissen, wie die Windowseigene Standardsuche so schnell funktioniert...
 
Zuletzt bearbeitet:
Ähnliche Java Themen

Ähnliche Java Themen


Oben