Ich habe zu Testzwecken eine kleine Suchfunktion geschrieben, die rekursiv Ordner und Dateien suchen soll. Das funktioniert soweit ganz gut, aber ich habe festgestellt, dass der nur Ordner findet und ich komm nicht drauf, woran das liegen könnte. Ich habe sogar mal ein wenig mit dem rumprobiert, was ich hier im Forum so an Code zu dem Thema gefunden habe.
Das ist die Klasse:
Danke im Vorraus.
Edit:
Mit dieser Klasse teste ich das ganze:
Das ist die Klasse:
Code:
import java.io.File;
import java.util.Vector;
import javax.swing.JLabel;
public class Search extends Thread
{
private File dir;
private String term;
private Vector treffer;
private long start;
private long end;
private JLabel currentDir;
private int count;
public Search(File dir, String searchTerm, JLabel currentDir)
{
this.dir = dir;
this.term = searchTerm.toLowerCase().trim();
this.treffer = new Vector();
this.currentDir = currentDir;
this.count = 0;
}
private void search(File dir) //Hier wird gesucht
{
currentDir.setText(dir.getAbsolutePath());
File[] files = dir.listFiles();
if(files != null)
{
for(File file : files)
{
count++;
//System.out.println(file.getName().toLowerCase());
if(file.getName().equalsIgnoreCase(term) | term.equals(""))
{
treffer.addElement(file.getName());
System.out.println(treffer.size() + ": " + file.getPath());
}
if(file.isDirectory())
search(file);
}
}
}
public void run()
{
start = System.currentTimeMillis();
search(dir);
end = System.currentTimeMillis();
long time = end - start;
System.out.println("Verbrauchte Zeit: " + time + "ms");
System.out.println("Durchsuchte Dateien: " + count + " Dateien");
System.out.println("Geschwindigkeit: " + count/(time/1000) + " Dateien pro Sekunde");
System.out.println("Treffer: " + treffer.size());
System.exit(-1);
}
}
Edit:
Mit dieser Klasse teste ich das ganze:
Code:
import java.io.File;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Main
{
private JFrame frame;
private JLabel dir;
public Main()
{
frame = new JFrame("Suche");
dir = new JLabel("");
frame.setSize(700,50);
frame.getContentPane().add(dir);
frame.setVisible(true);
new Search(new File("C:/"), "class", dir).start();
}
public static void main(String[] args)
{
new Main();
}
}