# Unterordner eines Pfades Rekursiv durchsuchen



## Nothiing___ (12. Aug 2010)

Hallo zusammen

Ich erstelle gerade eine Applikation, dort kann ich mittels JFileChooser mehrere Dateien öffnen. Dannach lies ich die Pfade und lasse diese im JTextArea anzeigen(Bis hier bin ich bereits gekommen). Mittels dieser Pfade möchte ich dann den Ordner nach Unterordner durchsuchen. Alle Dateien im Ordner und im Unterordner sollen dann in einem anderen JTextArea angezeigt werden.

Ich denke, dass ich dies mittels einer Rekursion anstellen muss. Meine Frage nun wie soll ich das anstellen? Um ein Beispiel währe ich sehr froh.

Liebe Grüsse


----------



## eRaaaa (12. Aug 2010)

Suche "Unterordner + Rekursion" sollte einiges an Ergebnissen, die für dich hilfreich sein sollte, liefern..z.B. http://www.java-forum.org/java-basi...464-datei-filter-inkl-unterverzeichnisse.html


----------



## Nothiing___ (12. Aug 2010)

Hallo 
Danke für deine Antwort
Habe somit eben eine Rekursion geschrieben.

[JAVA=42]public class RekursivDurchsuchen {

	public RekursivDurchsuchen() {
		File file = new File("C:/DatenWelt");
		istOrdner(file);
	}

	public static String istOrdner(File file) {

		File[] fileList = file.listFiles();
		for(File f : fileList) {
			if(f.isDirectory() == true) {
				file = new File(f.getPath());
				return istOrdner(file);
			} 
			else {
				System.out.println(f.getName());
			}
		}
		return "OK";

	}

	public static void main(String[] args) {
		new RekursivDurchsuchen();
	}
}[/Java]

Nun habe ich das Problem, dass mir nur die Dateien welche im UnterOrdner liegen angezeigt werden. 
Woran kann dies liegen?


----------



## Murray (12. Aug 2010)

***


----------



## eRaaaa (12. Aug 2010)

Naja, weil du so halt immer nur das letzte File zurück gibst. Ich würde es evtl. so machen wie in dem von mir verlinktem Beispiel, mit einer Liste:


```
import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class RekursivDurchsuchen {

	public RekursivDurchsuchen() {
		File file = new File("C:/DatenWelt");
		List<File> files = istOrdner(file);
		for (File f : files) {
			System.out.println(f.getName());
		}
	}

	public static List<File> istOrdner(File file) {
		List<File> ret = new ArrayList<File>();
		File[] fileList = file.listFiles();
		for (File f : fileList) {
			if (f.isDirectory()) {
				ret.addAll(istOrdner(f));
			} else {
				ret.add(f);
			}
		}
		return ret;

	}

	public static void main(String[] args) {
		new RekursivDurchsuchen();
	}
}
```

so z.B...gibt sicherlich noch andere Wege..


----------



## Nothiing___ (12. Aug 2010)

Herzlichen Dank
aber habe das Problem inzwischen anderes gelöst.


----------

