Werte in Datei schreiben

Status
Nicht offen für weitere Antworten.

Pasche

Bekanntes Mitglied
Ich suche eine möglichst einfache Methode um Werte von Variablen in eine Datei zu schreiben bzw. aus einer Datei zu lesen. Ich hatte erst an ini-Dateien gedacht und zu folgendes gefunden:

Code:
        Properties prop = new Properties();
        try {
            prop.load(new BufferedInputStream(
                    new FileInputStream("deinINIFilemitPfad")));
            String name = prop.getProperty("name");
            // usw...
        } catch (IOException e) {
            e.printStackTrace();
        }

Nur soll das ganze unter Linux laufen, wo ja ini-Dateien nicht üblich sind. Da kamen mir xml-Dateien in den Sinn, allerdings bräuchte ich da mal eure hilfe. Es sollen einfach die variablen "Name", "Vorname" und "Alter" gespeichert werden. könnt ihr mir da weiterhelfen ?
 
Pasche hat gesagt.:
Nur soll das ganze unter Linux laufen, wo ja ini-Dateien nicht üblich sind.

Wie kommst Du denn zu dieser Aussage? Ich denke, dass es prinzipiell in Ordnung ist eine Property-File unter Linux abzulegen. Also, ob in der Datei jetzt XML oder was anderes steht sollte doch egal sein. Es handelt sich doch um eine Datei, die zu deiner Applikation gehört...
Also ich würde es mir an der Stelle nicht zu kompliziert machen und einfach die Properties rausschreiben...
 
Da sieht man wieder dass man sich nie auf die Antworten anderer verlassen sollte 🙂

Den Codeschnipsel hab ich auch hier im Forum gefunden. Wie sieht denn das passende Gegenstück dazu aus, mit dem ich eine Datei nicht auslesen sondern schreiben kann ?
 
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Properties.html#store(java.i😵utputStream,%20java.lang.String)
RTFM
 
Daraus werde ich nie so wirklich schlau. Hätte es jetzt so versucht:

Code:
        try {
            prop.store(new BufferedOutputStream(
                    new FileOutputStream("/usr/local/cache.ini", "haupt")));
            prop.setProperty("name", "kasper");

        } catch (IOException e) {
            e.printStackTrace();
        }

funktioniert aber nicht wirklich 🙁
 
sie speicherst und dann änderst du etwas....
dann ist im gespeicherten natürlich keinen änderung vorhanden...
 
mir ging es hierbei vielmehr um die syntax bzw. das generelle verständnis. wenn ich es so ausführe, bekomme ich folgende fehlermeldung:

cannot resolve symbol
symbol : constructor FileOutputStream (java.lang.String,java.lang.String)
location: class java.io.FileOutputStream
new FileOutputStream("/usr/local/cache.ini", "haupt")));
 
aso...
du hast Klammern falsch gesetzt... der FileOutputStream kennt keinen Konstruktor mit 2 Strings... "haupt" sollte das 2. argument von der Methode store sein !

Code:
Properties p = new Properties();
p.setProperty("name", "deathbyaclown");
p.store(new FileOutputStream("datFile.properties"), "comment");
 
Soweit funktioniert das Ganze jetzt. Bleibt nur ein Problem. Im Moment wird die Datei jedes mal komplett neu geschrieben, d.h. alle vorherigen Einträge sind dadurch weg. ich könnte zwar vor dem Speichern alle Einträge auslesen und wieder mit speichern, erscheint mir aber ziemlich umständlich. Was muss ich machen, um die Datei nicht komplett neu zu schreiben ?
 
vom prinzip her geht das schon, du müsstest dem FileOutputStream konstruktor einfach noch ein true mitgeben, d.h. er hängt alles hintendran...

davon ist aber abzuraten weil sonst folgendes passieren kann:
Code:
#comment
#Thu Nov 25 09:45:55 CET 2004
name=deathbyaclown
#h
#Thu Nov 25 10:19:11 CET 2004
name=death
d.h. du hast aufeinmal für einen schlüssel zwei versch. Werte...
daher - am anfang des programms einlesen, am ende des programms schreiben...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben