Variable in File ändern

RMI_17

Erfahrenes Mitglied
Hallo

Ich habe ein .properties file. In diesem File habe ich eine Variable die:

intLen=3

so...

Nun kann ich die Variable zwar mit getProperty auslesen aber wie kann ich ihren Wert ändern

Mfg Rmi
 
Nunja,

also, da du deine properties reingeladen hast, welche in der datei definiert wurden, werden diese auch wieder so zurückgeschrieben. Nur musst du die datei ja erst zum schreiben öffnen.

Das ist so schon korrekt, wie RedWing es beschrieben hat, keine Angst, keine deiner definierten Properties gehen verloren ;)


Gruss,

Torsten
 
Ok es geht!

Hab was übersehen. Aber es ändert mir die Formatierung des Files, kann man das umgehen?

MFG Rmi
 
Zuletzt bearbeitet:
RMI_17 hat gesagt.:
Ok es geht!

Hab was übersehen. Aber es ändert mir die Formatierung des Files, kann man das umgehen?

MFG Rmi

Du meinst die Reihenfolge deiner Key, Value Paare in der Property Datei?
Scheint an der Properties.load(InputStream in) Methode zu liegen...
Aber einen Workaraound weiß ich leider auch nicht...

Gruß

RedWIng
 
Die Properties nutzen eine HashMap welche die keys nach einem Algorithmus ablegt, der einen bestimmten Wert ermittelt (damit sie sofort gefunden werden). Kannst dir es ja mal mit dem Debugger anschauen. Damit zerschießt es dir natürlich deine Reihenfolge. Ich benutze dann immer eine TreeMap, welche automatisch nach keys sortiert. Aber das schreiben in deinen File musst du dann selber machen.
Code:
TreeMap map = new TreeMap( prop ); // prop = dein Properties-Objekt
            try {
                BufferedWriter bw = new BufferedWriter( new FileWriter( file.getAbsolutePath() ) );
                /* Get each line in this TreeMap as an Iterator */
                Iterator it = map.entrySet().iterator();
                /* Write all entries */
                while( it.hasNext() ) {
                    String line = it.next().toString();
                    bw.write( line + NL ); // NL = System.getProperty("line.separator")
                }
                /* Clear Buffer */
                bw.flush();
                /* Clear Resources */
                bw.close();
            } catch( IOException e ) {
                e.printStackTrace();
            }
 
Zurück