# Systemverzeichniss einlesen und als JTree ausgeben



## wakoz (20. Januar 2011)

OK Keine wirkliche Java Frage 

Also ich erzeuge mir mit listFiles() ein File Array, welches ich zu einem JTree um Baue damit ich in einem Frame das Verzeichnis in Baum Struktur ansehen kann.

wenn ich Unterverzeichnisse habe werden diese zu Knoten mit unter knoten.

Mein Frame ist im Anhang, die drei Rot Markierten Tree Blätter gibt es in meinem System nicht 

Mit Anderen Worten: Diese drei knoten sehe ich nicht wenn ich denn Order via windoof einsehe, denn ich mit Java als JTree anzeigen lasse. 
Und ich habe auch die Versteckten Ordner und Dateien sichtbar!

hiermit lese ich das Verzeichnis und erzeuge ich den JTree

```
package de.kozian.fileworker;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;

public class FileAction {
	
	public JTree listDir(String dirAdress) {
		File dir = new File(dirAdress);
		File[] files = dir.listFiles();
		
		String fileseparator = System.getProperty("file.separator");
		
		DefaultMutableTreeNode root = new DefaultMutableTreeNode(dirAdress.substring(dirAdress.lastIndexOf(fileseparator)));
		
	
		this.createTree(root, files);
		
		return new JTree(root);
	}
	
	private DefaultMutableTreeNode createTree(DefaultMutableTreeNode parent, File[] files){
		if(files != null){
			for (File file : files) {
				this.addElement(parent, file);
			}
			
		}else {
			System.out.println("files == null");
		}
		return parent;
	}
	
	private DefaultMutableTreeNode addElement(DefaultMutableTreeNode parent, File filetoappend){
		DefaultMutableTreeNode node = null;
			new DefaultMutableTreeNode(filetoappend.getName());
		
		if (filetoappend.isDirectory()){
			node = new DefaultMutableTreeNode(filetoappend.getName());
			node = this.createTree(node, filetoappend.listFiles());
			
		}else{
			node = new DefaultMutableTreeNode(filetoappend.getName());
			
		}		
		
		parent.add(node);
		
		return parent;
	}
}
```
Die Drei Blätter sind eigentlich Knoten mit childreen aus dem Übergeordneten Ordner des Root Verzeichnisses welches ich einlese. zumindest gibt es dort Ordner mit den Namen.

Ich nutze Win 7 das Verzeichnis welches ich lese ist mit den drei Ordnern in der Win Bibliothek auf der gleichen ebene


----------

