Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
package folders;
import java.io.*;
public class PM_Tool {
// --------- globale variable, die von allen methoden benutzt werden können --------
private final static String filename = "D:\\tmp\\FolderStruktur.xml"; // der name des zu schreibende xml files
static FileWriter datei; // zum schreiben des xml files
private static PrintStream console; // zum Anzeigen von Meldungen und Fehlern
private static int level = -1; // aktuelle tiefe in der folderstruktur
private static String lineSep;
private static String insertString = " ";
public static void main(String[] args) {
File startFolder = new File("d:\\bubba");
beginn();
WriteXML(startFolder); // beginn der Rekursion mit dem Folder d:\\bubba
ende();
}
private static void beginn(){ // initialisieren
lineSep = System.getProperty("line.separator");
console = System.out;
try{
datei = new FileWriter(filename);
datei.write("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>");
datei.write(lineSep);
} // xml file öffnen
catch(IOException x){console.println("Problem bei der Erstellung des xml-Files");}
// hier eventuell header des xml files schreiben
}
public static void ende(){ // beenden
try{datei.close();}
catch(IOException x){}
}
private static void WriteXML(File folder) {
File[] subfolders;
StringBuffer tabulatoren = new StringBuffer(); // zur Einrückung im xml file der Anzeige
String tabs; // zur Einrückung im xml file der Anzeige
level++; // wir steigen ein Level tiefer in der Folderstruktur
// wir basteln die zum level passenden tabulatoren
for(int n=0; n<level*2; n++){ tabulatoren.append(insertString); }
tabs = tabulatoren.toString();
subfolders = folder.listFiles(); // wir lesen den Inhalt des aktuellen Folders
try{
// xml anfang für aktuellen folder schreiben
if(folder.isDirectory()) {; // wenn es kein folder ist nix machen
datei.write(tabs);
datei.write("<folder>");
datei.write(lineSep);
datei.write(tabs);
datei.write(insertString);
datei.write("<name>");
datei.write(folder.getName());
datei.write("</name>");
datei.write(lineSep);
datei.write(tabs);
datei.write(insertString);
datei.write("<sub_folder>");
datei.write(lineSep);
// xml für die subfolder des aktuellen folders schreiben
for(int i = 0; i < subfolders.length; i++) // wir gehen alle files des aktuellen folders durch
WriteXML(subfolders[i]);
// xml ende für aktuellen folder
datei.write(tabs);
datei.write(insertString);
datei.write("</sub_folder>");
datei.write(lineSep);
datei.write(tabs);
datei.write("</folder>");
datei.write(lineSep);
}
}
catch(IOException x){console.println("Problem bem Schreiben des xml-Files");}
catch(NullPointerException npx){console.println("Problem bei der Schreiben des xml-Files");}
level--;
}
}// End class
import org.jdom.*;
Document doc;
...
Element folder = new Element("folder");
doc.setRootElement(folder);
folder.addChild(new Element("name"));
Original geschrieben von Christian Fein
XmlElement:
http://msdn.microsoft.com/library/d...f/html/frlrfSystemXmlXmlElementClassTopic.asp
XmlDocument:
http://msdn.microsoft.com/library/d.../html/frlrfSystemXmlXmlDocumentClassTopic.asp
XmlDocumentType:
http://msdn.microsoft.com/library/d...l/frlrfSystemXmlXmlDocumentTypeClassTopic.asp
usw
Original geschrieben von Alexander Schuc
// Edit:
Zuerst Kaffee trinken, dann mal Wach werden, danach erst den SourceCode durchsehen, den Denkvorgang gleichzeitig starten und dann vielleicht mal etwas tippen.
Mit dem DataSet wäre es nun ein wenig Blöd, da ja im Subfolder Bereic, nochmal alle Unterordner als Folder-Elemente auftauchen.
Vielleicht sollte ich nochmal ins Bett.![]()
Original geschrieben von Christian Fein
Du willst nicht wissen was ich so zusammenstammel wenn ich nicht ausgeschlafen bin![]()
using System;
using System.IO;
using System.Xml;
namespace perTutsDe
{
/// <summary>
/// PMTool - Ordnerstruktur in XML Datei schreiben
/// </summary>
public class PMTool
{
private static string filename = @"C:\FolderStructure.xml";
private static XmlDocument XDoc;
public static void Main(string[] args)
{
DirectoryInfo dir = new DirectoryInfo(@"C:\fractalTree_src");
// Neues XmlDocument erstellen
XDoc = new XmlDocument();
XmlNode XRootNode = XDoc.CreateNode(XmlNodeType.Element, "folder", "");
CreateFolderStructure(dir, XRootNode, XDoc);
XDoc.AppendChild(XRootNode);
XDoc.Save(filename);
}
/// <summary>
/// Deine WriteXML Methode
/// </summary>
/// <param name="dir">das Verzeichniss, welches durchgearbeitet werden soll</param>
/// <param name="ParentNode">der Node des übergeordneten Ordners</param>
/// <param name="XDoc">das XmlDocument, benötigt zum erzeugen eines neuen Nodes</param>
public static void CreateFolderStructure(DirectoryInfo dir, XmlNode ParentNode, XmlDocument XDoc)
{
/*
* Nur etwas machen, wenn der Ordner existiert.
* (Ist eine Eigenschaft/property der DirectoryInfo-Instanz,
* keine Methode wie in Java)
*/
if (dir.Exists)
{
// Node erstellen für den Namen des Ordners
XmlNode XNameNode = XDoc.CreateNode(XmlNodeType.Text, "name", "");
XNameNode.Value = dir.Name; // Names des Ordners, eine Eigenschaft
// Node für die Unterordner
XmlNode XSubFolderNode = XDoc.CreateNode(XmlNodeType.Element, "subfolder", "");
/*
* Jeden Unterordner im aktuellen Verzeichniss durchgehen
* GetDirectories liefert ein Array zurück welches
* bequem mit einer foreach - Schleife durchgegangen werden kann
*/
foreach (DirectoryInfo SubDir in dir.GetDirectories())
CreateFolderStructure(SubDir, XSubFolderNode, XDoc);
// Die neu erstellten Nodes dem Dokument hinzufügen
ParentNode.AppendChild(XNameNode);
ParentNode.AppendChild(XSubFolderNode);
}
}
}
}