# Dateien in Verzeichnissen rekursiv in ein Feld legen



## goldmeber (1. September 2004)

Hallo,

ich möchte gerne ein Verzeichnis mit dem JFileChooser auswählen können
und anschließend mit dem erhaltenen Verzeichnis rekursiv bestimmte
Dateien (z.B. *.jpg) mit Pfadangabe  (C:\Hauptverz\Unterverz1\Datei1.jpg, C:\Hauptverz\Unterverz1\Datei2.jpg )

in ein Array legen , um damit weiterzuarbeiten.

Konkret :

Hauptverzeichnis (ausgewählt)
                  +---------Unterverzeichnis1
                  |                        +---Datei1.jpg
                  +---------Unterverzeichnis2
                  |                        +---Datei2.jpg
                  |                        +---Datei3.jpg
                                           +---------------------Unterverzeichnis3
etc.

Allerdings weiß ich nicht wie ich eine derartige Funktion gestalten soll.
Sie müßte ausgehend vom ausgewähtem Verzeichnis alle Verzeichnisse darunter durchsuchen und nach Dateien mit der vorgegebenen Endung schauen.
Hat jemand einen kleinen Rat?
Danke im Vorraus!


----------



## Thomas Darimont (1. September 2004)

Hallo!


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

public class JDirectoryScanner {

	private File root;
	private List fileList;
	protected boolean stop = false;
	private FileFilter filter = new FileFilter() {

		public boolean accept(File file) {
			if (file.isDirectory())
				return true;

			String name = file.getName();
			if (name.endsWith(".bmp"))
				return true;
			if (name.endsWith(".png"))
				return true;
			return false;
		}
	};

	public JDirectoryScanner() {
		fileList = new ArrayList();
		root = new File("c:/windows");
		treeWalk(root);
		System.out.println(fileList);
	}

	//frei nach der dclj FAQ (www.dclj.de)
	public final void treeWalk(File root) {

		File[] files = root.listFiles(filter);
		if (files == null || files.length < 1)
			return;
		for (int i = 0; i < files.length; i++) {
			if (files[i].isDirectory()) {
				treeWalk(files[i]);
			} else {
				//System.out.println(files[i].getName());
				fileList.add(files[i]);
			}
		}
	}

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

Gruß Tom


----------



## goldmeber (1. September 2004)

Jau, funktionert so pirma,Klasse! Danke!
Habs für meine Verhältnisse noch bissl angepast.
Wollte mit den ausgewählten Verzeichnissen eine externe Datei mit dem gesammelten Array  ausführen.
Auch wieder rekursiv  File für File im Array.


----------



## goldmeber (10. September 2004)

Hi,

Ich versuch gerade mit dem Teil von oben, die eingelesenen Verzeichnisse mit den entsprechend gefundennen Dateien aus dem Vector in einen Jtree zu bekommen. 
Hätte jemand einen Ansatz dafür wie ich ein Jtree Object erzeugen kann das mit den Daten (Verzeichnisse und Dateienamen) gefüttert wird?

Wollte dann wenn das tree Objekt gefüllt wurde noch selber 'childs' dranhängen und bearbeiten.... dafür les ich gerade ein trutorial ünber listener mehthoden... aber das ist erstmal 2. rangig

Methoden dürfen so ähnlich aussehn wie : 

```
tree.addDirEntry(Vector[i]);
tree.addFileEntry(Vector[i]);
```

ausehnen sollte der Tree wie ein abbild eines Vertzeichniss-Baums :
(Ohne laufwerksbuchstaben)

(Ausgewähltes)
Hauptverzeichniss
              +--------Unterverz1
.                                     +Datei1
              +--------Unterverz2
.                                     +Datei2

etc.


Danke für jeden kleinen Tip im Vorraus!


----------

