# Bestimmte Dateien im Verzeichnis durchsuchen



## Aleyna23 (12. April 2007)

Hallo,
kann mir jemand sagen, wie man in Java in einem Verzeichnis nach bestimmten Dateien suchen kann?
Beispiel: 
Verzeichnis: Programme
Dateien: 
test_1.txt
test_2.txt
test_3.txt
beispiel.txt
etc.

ich möchte nur die Dateien ausgeben die mit "test" beginnen.

Danke im Voraus.


----------



## KlaDi (12. April 2007)

Hallo,

mit der Klasse FileTreeWalker ist es möglich Verzeichnisse und Unterverzeichnisse nach Dateien zu durchsuchen. Dann musst Du nur noch Abfragen ob im Dateipfad "test" vorkommt und diese dann ausgeben.

Gru0 KlaDi.


----------



## Aleyna23 (12. April 2007)

danke. Hast du evtl. ncoh eine andere Lösung? Ich habe diese Klasse nicht...(wg. .jar)

Danke


----------



## Thomas Darimont (12. April 2007)

Hallo,

schau mal hier:
http://www.tutorials.de/forum/java/225822-verzeichnis-durchsuchen-ordner-ausgeben.html
http://www.tutorials.de/forum/java/259830-jface-treeviewer.html

Wenn man beides Kombiniert könnte das dann so ausschauen:

```
/**
 * 
 */
package de.tutorials;

import java.io.File;
import java.util.Set;
import java.util.Stack;
import java.util.TreeSet;

/**
 * @author thomas.darimont
 * 
 */
public class FileSearchExample {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		Set<File> files = findFilesBeneath(new File(
				"D:/stuff/springframework/2.0.2/spring-framework-2.0.2"),
				new IPredicate<File>() {
					public boolean evaluate(File file) {
						return file.getName().endsWith(".xml");
					}
				});
		System.out.println(files);
	}

	private static Set<File> findFilesBeneath(File startDirectory,
			IPredicate<File> predicate) {
		Set<File> foundFiles = new TreeSet<File>();
		Stack<File> files = new Stack<File>();
		files.push(startDirectory);
		while (!files.empty()) {
			File currentDirectory = files.pop();
			for (File currentFile : currentDirectory.listFiles()) {
				if (currentFile.isDirectory()) {
					files.push(currentFile);
				} else {
					if (predicate.evaluate(currentFile)) {
						foundFiles.add(currentFile);
					}
				}
			}
		}
		return foundFiles;
	}

	static interface IPredicate<TTargetType> {
		boolean evaluate(TTargetType arg);
	}
}
```

Gruß Tom


----------

