Ordnerstruktur anlegen

H2SO4

Bekanntes Mitglied
Hallo!

Eine Methode soll eine bestimmte Ordnerstruktur erstellen. Diese kann sich durchaus auch mal ändern.

Ich braue also eine Möglichkeit diese zu speichern. Was bietet sich dafür wie an?

order
-sub1
-sub2
--sub21
--sub22
-sub3
-sub4
--sub41
---sub411

Wie geh ich dann vor wenn ich die Struktur anlegen möchte?


Danke für eure Tipps/vorschläge/etc.
 

H2SO4

Bekanntes Mitglied
Hallo!

Ist JTree wirklich das richtige?

Ich will ja nicht Ordner einlesen und dann darstellen. Sondern ich möchte eine Ordnerstruktur programmintern vorhalten und dann mit einer Methode anlegen, so dass die Ordner wirklich existieren. Dazu würde ich ungern gleich so eine "große" Klasse JTree verwenden.

Wenn das doch das sinnvollste ist, könnte es mir vll einer am beispiel erklären? NUr ganz einfach.

Danke!
 

Ruzmanz

Top Contributor
Es geht weniger um die Verwendung von JTree sondern dessen umsetzung. Du kannst eine Orderstrucktur am schönsten in Form eines Baumes mit mehreren zweigen darstellen:

Code:
                   | - Datei 1
       |- Ordner 1 | - Datei 2
       |           | - Datei 3
       |
Root |- Ordner 2 | - Ordner 3 | - Datei 4
       | 
       |           | - Datei 5
       |- Ordner 4 | - Datei 6
                   | - Datei 7

Zitat aus dem Link:
Das Model ist sehr einfach und muss lediglich die Aussage treffen, ob das Element ein Blatt oder eine Wurzel darstellt und wo ein Element in der Baumverästelung liegt.
 
G

Gelöschtes Mitglied 5909

Gast
er will es aber nicht darstellen, sondern erstellen.

java.io.File#mkdir()

java.io.File#mkdirs()
 

Ruzmanz

Top Contributor
Er will intern eine Ordnerstruktur abspeichern und das realisiert man am besten mit einem Baum. Und ein Baum repräsentiert bzw. stellt bestimmte Informationen dar. Das hat überhaupt nichts damit zu tun, ob er die nun ausgeben möchte oder im Textformat irgendwo in seiner JRE rumgeistert. So habe ich ihn zumindest verstanden.
 
G

Gastredner

Gast
Vielleicht könnte man auch eine XML-Datei zum Speichern der Struktur nehmen (Programmintern könnte man das Dokument dan entsprechend darstellen, z. B. als JDOM-Document). Dann muss man nur noch über jedes Element des Baumes iterieren und die entsprechenden Ordner erstellen:
[XML]<dirs baseDir="/Pfad/zu/dem/Basisverzeichnis/">
<dir name="1">
<dir name="1.1" />
<dir name="1.2">
<dir name="1.2.1" />
</dir>
<dir name="1.3" />
</dir>
<dir name="2">
<dir name="2.1" />
<dir name="2.2" />
</dir>
</dirs>[/XML]
Java:
import java.io.File;
import java.util.List;

import org.jdom.Element;

public class FileUtils {

	public static void makeDirs(Element root) {
		File baseDir = new File(root.getAttribute("baseDir").getValue());
		if (!baseDir.exists()) {
			baseDir.mkdir();
		} else {
			// Dieser Fall muss noch behandelt werden.
		}
		List<Element> dirs = root.getChildren("dir");
		for (Element dir: dirs) {
			_makeDirs(baseDir, dir);
		}
	}

	private static void _makeDirs(File parent, Element dir) {
		File file = new File(parent, dir.getAttribute("name").getValue());
		if (!file.exists()) {
			file.mkdir();
		} else {
			// Dieser Fall muss noch behandelt werden.
		}
		List<Element> children = dir.getChildren("dir");
		if (!children.isEmpty()) {
			for (Element child: children) {
				_makeDirs(file, child);
			}
		}
	}
}
Das ist jetzt nur schnell heruntergeschrieben und vermutlich nicht optimal, aber es sollte funktionieren.

EDIT: Korrigiert und getestet, das Erstellen funktioniert.
 
Zuletzt bearbeitet von einem Moderator:

TJava

Bekanntes Mitglied
So geht es !
In der Main muss jetzt nur noch ein Objekt erstellt und dieses muss dann die Methode Makedirs aufrufen.

MfG



Java:
package de.usu.foxtrot.framework;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.xml.sax.InputSource;

import org.jdom.*;

import org.jdom.output.XMLOutputter;

public class CreateAutoItWorkspace {

	
	public static void makeDirs() throws JDOMException, IOException {
		SAXBuilder builder = new SAXBuilder();
		Document doc = builder.build(new File("myXML.xml"));
		Element root = doc.getRootElement();
		
		File baseDir = new File(root.getAttribute("baseDir").getValue());
		if (!baseDir.exists()) {
			baseDir.mkdir();
		} else {
			// Dieser Fall muss noch behandelt werden.
		}
		List<Element> dirs = root.getChildren("dir");
		for (Element dir : dirs) {
			_makeDirs(baseDir, dir);
		}
	}

	private static void _makeDirs(File parent, Element dir) {
		File file = new File(parent, dir.getAttribute("name").getValue());
		if (!file.exists()) {
			file.mkdir();
		} else {
			// Dieser Fall muss noch behandelt werden.
		}
		List<Element> children = dir.getChildren("dir");
		if (!children.isEmpty()) {
			for (Element child : children) {
				_makeDirs(file, child);
			}
		}
	}

}
 
Zuletzt bearbeitet:
G

Gastredner

Gast
In der Main muss jetzt nur noch ein Objekt erstellt und dieses muss dann die Methode Makedirs aufrufen.
Objekt erstellt werden? Von was? CreateAutoItWorkspace? Sicherlich nicht, die Methoden sind static und können einfach so aufgerufen werden.
Abgesehen davpn fände ich es sinnvoller, würdest du den nichtmodifizierten Code verwenden und die XML-Datei vor dem Aufruf von FileUtils.makeDir parsen - das gäbe dir die Möglichkeit, einen bereits bestehenden Parser wiederzuverwenden oder auch die Auswahl einer anderen XML-Datei via FileChoose/etc einzubauen, ohne dazu den Code der ehemaligen FileUtils-Klasse verändern zu müssen, was deren Wiederverwendungswert erhöht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Ordnerstruktur anlegen Allgemeine Java-Themen 2
J Eigene Api erstellen und dann auch verwenden - Ordnerstruktur Allgemeine Java-Themen 1
P Ordnerstruktur nach .js-Files durchsuchen Allgemeine Java-Themen 2
E In Java svn Ordnerstruktur auslesen Allgemeine Java-Themen 4
G ganze Pfad in einer Ordnerstruktur abbilden Allgemeine Java-Themen 19
Noahscript Konto anlegen um JDK herunterzuladen? Was soll das? Allgemeine Java-Themen 1
P Eclipse Projekt anlegen macht Problem Allgemeine Java-Themen 1
F JTree: Nodes dynamisch anlegen via LinkedHashMap Allgemeine Java-Themen 2
A Datenstrukturen richtig anlegen/laufzeitanalyse Allgemeine Java-Themen 10
M Klassen Systemprozess anlegen Allgemeine Java-Themen 3
B Java FTP (common net - user anlegen) Allgemeine Java-Themen 2
T ArrayList<double[]> persitent anlegen Allgemeine Java-Themen 7
H2SO3- dynamisches anlegen der dimensionaltität eines arrays Allgemeine Java-Themen 6
S Problem beim Anlegen eines JDialogs! Allgemeine Java-Themen 4
MQue Ordner anlegen Allgemeine Java-Themen 7
V Neues Objekt anlegen, welcher Typ? Allgemeine Java-Themen 2
M JFileChooser: Ordner anlegen Allgemeine Java-Themen 3
C Temporäre Datein anlegen Allgemeine Java-Themen 2
E Problem beim Anlegen einer Datei Allgemeine Java-Themen 4
B Datenbank anlegen Allgemeine Java-Themen 10
G FileOpenDialog Pfad anlegen? Allgemeine Java-Themen 2
S In .jar File Verzeichnisse anlegen Allgemeine Java-Themen 2
D Datei beim ersten Programmstart anlegen? Allgemeine Java-Themen 3
S Temporäres Verzeichnis anlegen? Allgemeine Java-Themen 4
F Das Anlegen von Objekt-Instanzen... Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben