Alle Dateien in Verzeichnissen nach String durchsuchen

Klein0r

Erfahrenes Mitglied
Hallo,

ich würde gerne eine Klasse schreiben welche es mir ermöglich alle Dateien in einem Verzeichnis (inclusive Unterverzeichnisse) nach einem Text zu durchsuchen. Wie würdet ihr das ganze am besten angehen damit es nicht ewig dauert?

Mit einem ganz normalen FileReader und Stringvergleichen?
Das würde wahrscheinlich sehr lange dauern, oder?

Gibt es da bessere Lösungsansätze?

lg
 
Habe es jetzt so gemacht - geht es noch schneller?

Java:
	private void searchTextInFile(File f) {
		//System.out.println("Suche in: " + f.getAbsolutePath());
		
		FileReader freader;
		
		try {
			freader = new FileReader(f);
			
			BufferedReader reader = new BufferedReader(freader);
			
			while(true) {
				String line = reader.readLine();
				if(line != null)
				{
					if(line.indexOf(this.searchText) > -1)
					{
						this.foundInFiles.add(f);
					}
				}
				else break;
			}
			
			reader.close();
			
		} catch (FileNotFoundException e) {
			// Nothing
		} catch (IOException e) {
			// Nothing
		}
		
	}

EDIT:
Das mit dem break ist ja nicht sonderlich schön:
Java:
	private void searchTextInFile(File f) {
		//System.out.println("Suche in: " + f.getAbsolutePath());
		
		FileReader freader;
		boolean found = false;
		
		try {
			freader = new FileReader(f);
			
			BufferedReader reader = new BufferedReader(freader);
			String line = reader.readLine();
			
			while(!found && line != null) {
				if(line.indexOf(this.searchText) > -1)
				{
					this.foundInFiles.add(f);
					found = true;
				}
				line = reader.readLine();
			}
			
			reader.close();
			
		} catch (FileNotFoundException e) {
			// Nothing
		} catch (IOException e) {
			// Nothing
		}
		
	}
 
Zuletzt bearbeitet:
Da wohl niemand dazu was sagen möchte werde ich das Thema als erledigt kennzeichnen... Muss ich mit der Lösung wohl leben :)

lg
 
U.U. mal aus commons-io die FIleUtils anschauen. Solch rudimentäre Aufgaben bekommt man mit commons-bibliotheken meist recht schnell erschlagen.

REINHAUN!
 
Zurück