Hallo liebe Java-Forum Community,
zuersteinmal möchte ich mich entschuldigen wenn dieses Thema bereits angesprochen wurde, aber ich zu dumm war die SuFu zu benutzen. Meistens wähle ich einfach die falschen Stichwörter um solche Themen zu finden ... nunja.. ich geb mein bestes
Also ich bin noch ein richtiger Java-Anfänger, aber habe mich vor einer weile entschieden mir Java anzueignen, da ich auf der Arbeit mit VBA (ja.. ._.) arbeite und ich damit einfach im späteren Berufsleben keine Chancen haben werde. In der Schule lernen wir nur Grundkenntnisse die man in den einzelnen Sprachen haben sollte (Klassen, Objekte, Methoden... und das ganze Zeug.)
Also ich bin in einer Ausbildung zum Fachinformatiker - Anwendungsentwicklung.
Wie schon gesagt versuche ich nun mir Java beizubringen, und habe mir dafür nun (ich hoffe ich darf des posten und des zählt nicht unter Fremdwerbung) die beiden Bücher "Java ist auch eine Insel" und "Java ist mehr als eine Insel " (J7) zugelegt.
Nun bei mir ist es so.. das das reine lesen mir einfach nichts beibringt. Daher lese ich immer mal wieder ein bisschen in einer festen Reihenfolge aber fang nebenbei auch einfach drauf an loszuprogrammieren. So lerne ich besser!
Also nun zu meinem Problem:
Bei meiner "Einfach Loslegen-Strategie" bin ich auf die .properties Datei gestoßen und meine Augen haben direkt angefangen zu funkeln... bis.. ich dann herausfand das die properties.set Methode mir die ganze Datei neuschreibt ohne die alten Daten zu behalten.
Nun.. voller Motivation habe ich mir einfach ein paar kleine eigene set Methoden gebastelt welche mir zuerst den kompletten Inhalt der Datei auslesen und danach wieder einfügen, bzw. den veränderten Wert einfügen.
Anfangs hat alles wunderbar funktioniert... doch heute kam es plötzlich vor das die Eigenschaft-NAMEN und die Eigenschaft-WERTE vertauscht wurden. Nun habe ich in meiner SE_Datenbank.properties bei Port die IP-Adresse stehen etc.
Damit Ihr euch einen besseren Eindruck davon machen könnt, was ich versuche.. werde ich einfach mal die set-Methode vorzeigen, da ihr mir ansonsten wohl auch nicht viel weiter helfen könntet.
set:
Datei_auslesen:
Danke fürs lesen & hoffe auch eine schnelle Antwort
Mit lieben Grüßen
Times
PS: Bitte nicht über meine Syntax meckern, aber habe mir eine festgelegte Norm erstellt und da komm ich einfach besser klar. (z.b. Block-Klammern sollen immer auf der selben Ebene auf und zugehen!)
zuersteinmal möchte ich mich entschuldigen wenn dieses Thema bereits angesprochen wurde, aber ich zu dumm war die SuFu zu benutzen. Meistens wähle ich einfach die falschen Stichwörter um solche Themen zu finden ... nunja.. ich geb mein bestes
Also ich bin noch ein richtiger Java-Anfänger, aber habe mich vor einer weile entschieden mir Java anzueignen, da ich auf der Arbeit mit VBA (ja.. ._.) arbeite und ich damit einfach im späteren Berufsleben keine Chancen haben werde. In der Schule lernen wir nur Grundkenntnisse die man in den einzelnen Sprachen haben sollte (Klassen, Objekte, Methoden... und das ganze Zeug.)
Also ich bin in einer Ausbildung zum Fachinformatiker - Anwendungsentwicklung.
Wie schon gesagt versuche ich nun mir Java beizubringen, und habe mir dafür nun (ich hoffe ich darf des posten und des zählt nicht unter Fremdwerbung) die beiden Bücher "Java ist auch eine Insel" und "Java ist mehr als eine Insel " (J7) zugelegt.
Nun bei mir ist es so.. das das reine lesen mir einfach nichts beibringt. Daher lese ich immer mal wieder ein bisschen in einer festen Reihenfolge aber fang nebenbei auch einfach drauf an loszuprogrammieren. So lerne ich besser!
Also nun zu meinem Problem:
Bei meiner "Einfach Loslegen-Strategie" bin ich auf die .properties Datei gestoßen und meine Augen haben direkt angefangen zu funkeln... bis.. ich dann herausfand das die properties.set Methode mir die ganze Datei neuschreibt ohne die alten Daten zu behalten.
Nun.. voller Motivation habe ich mir einfach ein paar kleine eigene set Methoden gebastelt welche mir zuerst den kompletten Inhalt der Datei auslesen und danach wieder einfügen, bzw. den veränderten Wert einfügen.
Anfangs hat alles wunderbar funktioniert... doch heute kam es plötzlich vor das die Eigenschaft-NAMEN und die Eigenschaft-WERTE vertauscht wurden. Nun habe ich in meiner SE_Datenbank.properties bei Port die IP-Adresse stehen etc.
Damit Ihr euch einen besseren Eindruck davon machen könnt, was ich versuche.. werde ich einfach mal die set-Methode vorzeigen, da ihr mir ansonsten wohl auch nicht viel weiter helfen könntet.
set:
Java:
public static void set(String Datei, String Eigenschaft, String Wert)
{
if(Wert.equals(get(Datei, Eigenschaft)))
{
return;
}
FileOutputStream stream;
Properties props = new Properties();
int eigenschaft_alt_anzahl = Eigenschaftanzahl_get(Datei);
String eigenschaften_alt_werte[][];
if (eigenschaft_alt_anzahl > 0)
{
eigenschaften_alt_werte = Datei_auslesen(Datei,eigenschaft_alt_anzahl);
try
{
stream = new FileOutputStream("src/properties/" + Datei + ".properties");
for(int i = 0; i<= eigenschaft_alt_anzahl-1;i++)
{
if (eigenschaften_alt_werte[i][0].equals(Eigenschaft))
{
props.setProperty(Eigenschaft, Wert);
}
else
{
props.setProperty(eigenschaften_alt_werte[i][0], eigenschaften_alt_werte[i][1]);
}
}
props.store(stream, null);
stream.close();
}
catch (IOException e)
{
System.err.println(e);
}
}
else
{
try
{
stream = new FileOutputStream("src/properties/" + Datei + ".properties");
props.setProperty(Eigenschaft, Wert);
props.store(stream, null);
stream.close();
}
catch (IOException e)
{
System.err.println(e);
}
}
}
Datei_auslesen:
Java:
private static String[][] Datei_auslesen(String Datei, int Eigenschaftanzahl)
{
BufferedInputStream stream;
Properties props = new Properties();
String ergebnis[][];
try
{
stream = new BufferedInputStream(new FileInputStream("src/properties/" + Datei + ".properties"));
props.load(stream);
ergebnis = new String[Eigenschaftanzahl][2];
Enumeration enumerat;
enumerat = props.propertyNames();
int i = 0;
while(enumerat.hasMoreElements())
{
ergebnis[i][0] = enumerat.nextElement().toString();
i+=1;
}
Collection collect = props.values();
i = 0;
for(Object obj : collect)
{
ergebnis[i][1] = obj.toString();
i+=1;
}
//for (i = 0; i<= anzahl-1; i++)
//{
// System.out.println(ergebnis[i][0] + " " + ergebnis[i][1]);
//}
stream.close();
return ergebnis;
}
catch (IOException e)
{
System.err.println(e);
return null;
}
}
Danke fürs lesen & hoffe auch eine schnelle Antwort
Mit lieben Grüßen
Times
PS: Bitte nicht über meine Syntax meckern, aber habe mir eine festgelegte Norm erstellt und da komm ich einfach besser klar. (z.b. Block-Klammern sollen immer auf der selben Ebene auf und zugehen!)