Javaprogi übersetzten in c#

Lerni

Grünschnabel
hi :)

ich hab ein kleines java programm, dass ich gern in c# übersetzt haben möchte, und brauche dabei hilfe.... kann mir jemand dabei helfen?
 
Guten Morgen,

dir wird sicher gerne jemand helfe, würde sogar ich machen.

Hättest aber evt. das Java-Programm beschreiben können, und den Java-Source als Textdatei anhängen.
Einzeilige Postings, sowie durchgehend kleingeschriebene Beiträge, sind etwas unbeliebt hier.

Also,
zeige mal dein Java Programme. Brauchst du nur Hilfe bei bestimmten Passagen, oder für das komplette Programm?


Mfg,
Alex
 
Javaprogi

Danke für den Hinweis, hier ist das Programm in Java

// das programm liest die Struktur des folders d:\bubba der festplatte und schreibt den inhalt in ein xml file
Code:
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
 
Hallo Lerni,

aber ich würde das ganze komplett anders schreiben.
Soll heissen, wenn du so oder so XML erstellen willst nimm die XML Biblothek.
Unter Java z.b JDOM sieht das dann so oder ähnlich aus:

Code:
import org.jdom.*;

Document doc;
 
...

Element folder = new Element("folder");
doc.setRootElement(folder);
folder.addChild(new Element("name"));

usw
.

Unter .net sieht das ungefair genauso aus. Soll heissen den namensraum System.xml nutzen, sprich klassen wie:

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
 

Ich hätte nun für eine Version auf ein XML Schema und eine DataSet, welches auf Basis des Schemas eine XML Datei erstellt, zurückgegriffen.

Mfg,
Alex

// 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. ;)
 
Zuletzt bearbeitet:
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. ;)


Du willst nicht wissen was ich so zusammenstammel wenn ich nicht ausgeschlafen bin :p
 
Original geschrieben von Christian Fein
Du willst nicht wissen was ich so zusammenstammel wenn ich nicht ausgeschlafen bin :p

Hm, wenn du das mal so erwähnst. würd mich schön so interessieren was du da von dir gibst, vorallem was für Code-Snippets. :rolleyes:

Zurück zum Thema, habe nun dieses Beispiel in C# gebastelt.
Lerni, ich hoffe dich stört es nicht wenn es mit besagten Xml-Klassen gemacht ist, wenn du sehen willst wie 'exakt' dieses Beispiel in C# aussieht, sag es, dann mach ichs noch schnell.

Code:
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);
				

			}

		}

	}

}
 

Anhänge

  • pmtool.txt
    2,1 KB · Aufrufe: 38
Habe einen kleinen 'Fehler' im Code ausgebessert. Das generierte XML sollte dann so aussehen, wie du es wolltest.

// Alex
 

Anhänge

  • folderstructurexml.cs.txt
    2,2 KB · Aufrufe: 37

Neue Beiträge

Zurück