Erstellung einer Ordnerstruktur

crombix

Grünschnabel
Hallo zusammen ! weiss jemand vielleiecht wie ich anhand mehreren Pfaden (die ich in einem Vector gespeichert habe) eine Ordnerstruktur daraus anzeigen kann ?:rolleyes:

zBsp :

C:\Dokumente und Einstellungen\Desktop\Ordner1
C:\Dokumente und Einstellungen\Desktop\Ordner1\subOrdner1
C:\Dokumente und Einstellungen\Desktop\Ordner1\subOrdner1\subsubOrdner1
C:\Dokumente und Einstellungen\Desktop\Ordner1\subOrdner1\subsubOrdner2
C:\Dokumente und Einstellungen\Desktop\Ordner1\subOrdner1\subsubOrdner3
C:\Dokumente und Einstellungen\Desktop\Ordner1\subOrdner2
C:\Dokumente und Einstellungen\Desktop\Ordner1\subOrdner3
C:\Dokumente und Einstellungen\Desktop\Ordner1\subOrdner3\subsubOrdner1
C:\Dokumente und Einstellungen\Desktop\Ordner1\subOrdner3\subsubOrdner2
C:\Dokumente und Einstellungen\Desktop\Ordner2
C:\Dokumente und Einstellungen\Desktop\Ordner3

dass ich das am ende so habe:

- Ordner1
-- subOrdner1​
----- subsubOrdner1​
----- subsubOrdner2​
----- subsubOrdner3​

-- subOrdner2​
-- subOrdner3​
----- subsubOrdner1​
----- subsubOrdner2​
- Ordner2
- Ordner3
...usw..

Danke vielmals !
Crombix.
 
Moin,

KA, ob es eine schöne Lösung ist, aber so auf die Schnelle :

zeilenweise:
(a) ersetze "C:\Dokumente und Einstellungen\Desktop\" durch "-"
(b) zähle alle weiteren "\" und schreibe entsprechend viele "-" dazu und danach den restlichen Pfad

Gruß
Klaus
 
Hi Klaus,
danke für die Antwort, ich wollte das aber als richtige Tree darstellt haben mit Parent und Child-Abhängigkeiten !!
LG
Crombix.
 
Moin,

aha, d. h. Dein Vektor ist nicht so sortiert gefüllt :confused:
C:\Dokumente und Einstellungen\Desktop\Ordner1
C:\Dokumente und Einstellungen\Desktop\Ordner1\subOrdner1
C:\Dokumente und Einstellungen\Desktop\Ordner1\subOrdner1\subsubOrdner1
C:\Dokumente und Einstellungen\Desktop\Ordner1\subOrdner1\subsubOrdner2
C:\Dokumente und Einstellungen\Desktop\Ordner1\subOrdner1\subsubOrdner3
C:\Dokumente und Einstellungen\Desktop\Ordner1\subOrdner2
C:\Dokumente und Einstellungen\Desktop\Ordner1\subOrdner3
C:\Dokumente und Einstellungen\Desktop\Ordner1\subOrdner3\subsubOrdner1
C:\Dokumente und Einstellungen\Desktop\Ordner1\subOrdner3\subsubOrdner2
C:\Dokumente und Einstellungen\Desktop\Ordner2
C:\Dokumente und Einstellungen\Desktop\Ordner3

Muss es unbedingt Vektor ein Vektor sein?
Alternativen wären sonst sortedList oder Collections ...

Den Rest wirst Du dann wohl eh' selbst programmieren müssen :rolleyes:

Gruß
Klaus
 
Hi,
es ist schon sortiert ! also es kommt zuerst der Parent, dann sein kinder, usw..
Ich hab ein vektor genommen, weil ich die als Files speichern wollte, somit kann ich wenn ich auf ein Element vom vector zugreife, auch andere Informationen davon haben wie getName() oder getParent() usw.. als Strings nur nützt mir nix !!
Gruß,
Crombix.
 
Moin,

aha - also kein String-Vektor ("Vektor<String>") ..... :rolleyes:
Von welchem generischen Typ ist denn Dein Vektor :confused:

Gruß
Klaus
 
Hi,
ich hab eine Methode geschrieben, welche den Root-Ordner als Parameter bekommt, und mir dann ein
Vector<File> zurückgibt mit allen Files (subOrdner von Root) die ich brauche ! und das ganze möchte ich gerne in einer View anzeigen als Tree.. Das krieg ich aber noch nicht ganz hin, das muss eine schlaue rekursive methode sein !!
Grus,
crombix
 
Hi,
wenn ich dich richtig verstehe hast du alle Files, also auch die Unterordner der Unterordner des Root-Ordners und so. Ich würde an deiner Stelle das alles nicht in einen Vector sondern in einen Tree einordnen, dann hast du schon fast die Lösung für dein Problem. Und schöner ists sowieso ;)

Du musst dann nur rekursiv alle Pfade ausgeben und für jede Ebene die ein File tief liegt eine bestimmte Anzahl Leerzeichen oder so vor die Ausgabe machen.

MfG,
DarkWizzard
 
Hi, danke erstmal für die Antwort !
Vom Vector hab ich schon versucht eine Tree zu basteln, aber was ich nicht hinbekommen habe, ist dass es so rekursiv ist, dass ich auch alle unterordner angezeigt bekomme ! Kannst du vielleicht ein Beispiel geben wie mit einer Methode rekursiv ein Baum erstellt wird ?
LG
Crombix.
 
Hi, ich hab das auf die Schnelle mal so gemacht:

Code:
import java.io.File;

public class TreeNode  {
	TreeNode[] content;
	String path;

	public TreeNode(String path) {
		this.path = path;
		File file = new File(path);
		String contentPaths[] = file.list();
		if(contentPaths!=null) {
			content = new TreeNode[contentPaths.length];
			for(int i=0; i<content.length; i++) {
				content[i] = new TreeNode(path+"/"+cPath);
			}
		}
	}
	
	@Override
	public String toString() {
		String result = path;
		if(content!=null) {
			for(TreeNode node: content) {
				result += System.getProperty("line.separator") + node.toString("  ");
			}
		}
		return result;
	}
	
	public String toString(String pre) {
		String result = pre + path;
		if(content!=null) {
			for(TreeNode node: content) {
				result += System.getProperty("line.separator") + node.toString(pre + "  ");
			}
		}
		return result;
	}
}



Benutzt werden kann das dann einfach so:

Code:
public class UseExample {
	public static void main(String[] args) {
		TreeNode root = new TreeNode("D:/plugins");
		System.out.println(root.toString());
	}
}
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück