Sucher erfasst nur Ordner

Status
Nicht offen für weitere Antworten.

André B.

Bekanntes Mitglied
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:
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);
	}
}
Danke im Vorraus.

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();
	}

}
 

André Uhres

Top Contributor
Code:
               String fn = file.getName().toLowerCase();
                if(fn.startsWith(term) || term.equals("")) {
 

Murray

Top Contributor
Bei mir funktioniert das Programm (auch ohne die oben vorgeschlagene Änderung; grundsätzlich ist es bei solchen Vergleichen aber schon sinnvoll, || anstelle von | zu verwenden, da in diesem Fall der zweite Teil der Bedingung nicht mehr geprüft werden muss, wenn der ersten Teil den gesamten Ausdruck bereits bestimmt).

Mit dem Testfall gibt es so allerdings wohl meist nicht viel zu finden, weil Dateien mit dem Namen "class" eher selten sind. Sucht man aber z.B. nach Main.class, wird man die wohl finden.
 

André B.

Bekanntes Mitglied
Es war ja so, dass wen ich mir den Dateinamen geben lassen habe, dass das dann immer sowas wie Main.class war und der ja eigentlich dann die Datei finden müsste, wenn ich nach "class" suche, aber auch, wenn ich es mit anderen Begriffen gemacht habe, die 100%ig da sein müssen, hat er nur eventuell Ordner, aber keine Dateien gefunden. Und mit startWith() wird doch bloß überprüft, ob der String damit anfängt. Ich möchte aber wissen, ob der Suchbegriffe im Namen enthalten ist, sodass ich beim Suchbegriff "date" auch z.B. "Textdatei.txt" finde.
 

André B.

Bekanntes Mitglied
Code:
if(file.getName().indexOf(term) != -1 || term.equals(""))
So siehts jetzt aus und es funktioniert super. Danke :)
 

Bleiglanz

Gesperrter Benutzer
Code:
String#contains wäre performanter
wirklich?

glaub ich nicht
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
Tobero .jar Dateine aus einem Ordner laden (Java 16) Allgemeine Java-Themen 5
G Datei aus Ordner wählen, ohne den Dateinamen im Pfad angeben zu müssen Allgemeine Java-Themen 4
Zrebna FileUtils.cleanDirectory() - aber einen sub-Ordner "verschonen" Allgemeine Java-Themen 1
M Ordner kopieren Allgemeine Java-Themen 5
B Datei/Ordner auf Server zugreifen/erstellen Allgemeine Java-Themen 2
I Klassen aus Jar-Dateien aus anderem Ordner laden Allgemeine Java-Themen 3
B Dateien / Bilder von "webapp" Ordner bekommen? Allgemeine Java-Themen 1
F Registry Ordner durchlaufen Allgemeine Java-Themen 1
Drachenbauer Wie sorge ich dafür, dass mein Spiel die ini-Datei in der Resourcen-ordner des Projektes schreibt? Allgemeine Java-Themen 5
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
M Key-File im selben Ordner speichern? Allgemeine Java-Themen 18
R Setting Ordner fehlt Allgemeine Java-Themen 1
J Ordner und Datei Struktur einer War Datei Allgemeine Java-Themen 1
K getResource guckt im Target-Ordner...? Allgemeine Java-Themen 2
P Zum src Ordner einen Projektes navigieren Allgemeine Java-Themen 8
D Ordner commiten mit SvnKit Allgemeine Java-Themen 0
U javax.mail.Folder.list() zeigt nicht alle Ordner Allgemeine Java-Themen 5
D Kopieren von Dateien aus einem Ordner in einen anderen Allgemeine Java-Themen 6
I nach Image Load in ListView, kann Ordner nicht mehr gelöscht werden Allgemeine Java-Themen 1
P JDK installieren Kann man die Ordner in C:\Users\*\AppData\LocalLow\Sun\Java\.... löschen? Allgemeine Java-Themen 3
X Dateien von der Jar zum Ordner kopieren. Allgemeine Java-Themen 4
Ananaskirsche Input/Output Dateien im Ordner Allgemeine Java-Themen 8
A Input/Output Liste der Dateien in einem Ordner in einer Jar Datei erhalten Allgemeine Java-Themen 11
D Ordner auf Desktop erstellen(Pc unabhängig) Allgemeine Java-Themen 5
K NetBeans Ordner bei 'Clean&Build' automatisch in dist Verzeichnis kopieren Allgemeine Java-Themen 0
T Ordner samt Dateien kopieren Allgemeine Java-Themen 11
T Datei Ordner in Binär-Zahlenkette umwandeln Allgemeine Java-Themen 11
M JavaMail Spam-Ordner Allgemeine Java-Themen 2
B Dateien verschwinden aus bin Ordner?! Allgemeine Java-Themen 5
Minonos Einem Programm Zugriff auf bestimmte Ordner geben Allgemeine Java-Themen 5
M Pakete in Ordner Kopieren Allgemeine Java-Themen 7
P Ordner und Unterordner rückwärts durchsuchen Allgemeine Java-Themen 3
B Swing In JAR Ordner durchsuchen Allgemeine Java-Themen 2
B Ordner öffnen mittels Java in Linux-Umgebung Allgemeine Java-Themen 7
H Ordner in Zip integrieren Allgemeine Java-Themen 7
P Input/Output Ordner löschen --> geht nicht Datei --> Ja Allgemeine Java-Themen 6
I Java Ordner kopieren [Error] Allgemeine Java-Themen 6
S Dateien aus src-Ordner lesen Allgemeine Java-Themen 3
E nach dem Ordner suchen, wo .jar datei sich befindet Allgemeine Java-Themen 17
Developer_X Java FTP - Ordner auf Server erstellen Allgemeine Java-Themen 7
S Zugriffschutz auf Ordner Allgemeine Java-Themen 5
E ordner rekursiv durchsuchen Allgemeine Java-Themen 6
E Ordner rekursiv kopieren Allgemeine Java-Themen 8
J Ordner im Archiv (jar) auslesen Allgemeine Java-Themen 12
P Datei aus Ordner wird nicht gelesen Allgemeine Java-Themen 2
4 Java Ordner Allgemeine Java-Themen 27
S auf freigebene Ordner zugreifen Allgemeine Java-Themen 6
F Ordner auslesen und in Editor ausgeben Allgemeine Java-Themen 7
L Ordner in ZipDatei erstellen Allgemeine Java-Themen 3
V Der Ordner von Java ist gelöscht und ich kann es nicht neu instalieren! Allgemeine Java-Themen 2
S Ordner wechseln wie bei chdir Allgemeine Java-Themen 6
D Ordner Verpfadung Allgemeine Java-Themen 19
B ProcessBuilder: kann Ordner im home nicht finden Allgemeine Java-Themen 2
N Dateien in Ordner einsortieren Allgemeine Java-Themen 11
G Ordner für Dateien finden Allgemeine Java-Themen 3
G Globalen Programm-Ordner herausfinden Allgemeine Java-Themen 7
K settings.properties in den src-ordner schreiben Allgemeine Java-Themen 2
D Ordner mit *.properties in classpath ? Allgemeine Java-Themen 5
D eclipse: Zugriff auf Ordner per code Allgemeine Java-Themen 4
S Einen Ordner zurück von der JarDatei Allgemeine Java-Themen 6
G Programm ausführen, sobald Ordner geöffnet? Allgemeine Java-Themen 21
MQue Ordner anlegen Allgemeine Java-Themen 7
B ZIP - Problem mit dem ersten Ordner Allgemeine Java-Themen 2
M JFileChooser: Ordner anlegen Allgemeine Java-Themen 3
J Verschieben ganzer Dateien (und Ordner) Allgemeine Java-Themen 3
Q ||| Nur Dateien einlesen ohne Ordner. Allgemeine Java-Themen 6
I Diverse Files aus Ordner auslesen Allgemeine Java-Themen 10
M Ordner nach neuester Datei durchsuchen Allgemeine Java-Themen 4
D Dateien und ordner ausgabe Allgemeine Java-Themen 5
G Subclipse + svn:ignore - Ordner manuel ignorieren? Allgemeine Java-Themen 2
Y Ordner löschen Allgemeine Java-Themen 2
D Auf Laufwerk bzw. Ordner auf einem Server zugreifen Allgemeine Java-Themen 7
T Ordner überwachen Allgemeine Java-Themen 6
TheJavaKid Ordner in Zip laden Allgemeine Java-Themen 21
D Linux Link wird als Ordner interpretiert? Allgemeine Java-Themen 2
A Alle Ordner durchsuchen und Dateien finden Allgemeine Java-Themen 2
F Alle Files im Ordner nach Dateinamen durchsuchen Allgemeine Java-Themen 28
F Dateien in einem Ordner zählen Allgemeine Java-Themen 15
H Klassen aus einem Ordner zur Laufzeit laden. Allgemeine Java-Themen 6
M ganzen Ordner mit URL angeben Allgemeine Java-Themen 4
K Ordner/Dateistruktur in Objekten nachbilden Allgemeine Java-Themen 6
N Inhalte aller Txts in einem Ordner Addieren Allgemeine Java-Themen 5
N Alledateien in einem Ordner in ein Vector speichern Allgemeine Java-Themen 19
F Ordner erstellen Allgemeine Java-Themen 3
M Bilder-Ordner kann im JAR-File nicht gefunden werden Allgemeine Java-Themen 15
B dynamisches Laden aller Klassen in einem Ordner ?? Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben