Speichern von Programmeinstellungen in Datei

MiMa

Top Contributor
Seit Tagen versuche ich schon meine Programmeinstellungen in eine Datei Platformunabhängig zu speichern. Meine Programmeinstellungen habe ich in eine eigene Klasse (Einstellungen ) verlegt. Ich erstelle ein Objekt (prgEin) in denen dann alle Einstellungen enthalten sind.
Mit der Methode "schreibePrgEinHD" schreibe ich das Objekt in eine Datei
Java:
public static void schreibePrgEinHD(String dateiname, Einstellungen prgEin) {
        try {
            // Datenstrom zum schreiben in die Datei
            FileOutputStream schreibenStream = new FileOutputStream(dateiname);
            // Schreibt die Objekte in den Objekt Stream
            ObjectOutputStream objektStream = new ObjectOutputStream(schreibenStream);
            // Schreibt die Objekte in den Objekt Stream
            objektStream.writeObject(prgEin);
            // Schließt den Stream
            objektStream.close();
        }
        catch (IOException e) {
            System.err.println(e);
        }
    } // schreibeObjektDatenHD
Mit der Methode "ladePrgEinHD" möchte ich dieses Objekt wieder einladen.
Java:
public static Einstellungen ladePrgEinHD(String dateiname) {
        Einstellungen prgEin = new Einstellungen();
        try {
            // Objekt für den Dateinamen
            FileInputStream dateiStream = new FileInputStream(dateiname);
            ObjectInputStream objektStream = new ObjectInputStream(dateiStream);
            prgEin = (Einstellungen) objektStream.readObject();
            objektStream.close();
        }
        catch (IOException | ClassNotFoundException e) {
            System.err.println(e);
        }
        return prgEin;
    } // ladePrgEinHD

Das Speichern schein zu funktionieren, da ich eine Datei mit 492 bytes erhalte.
Leider scheint das einladen nicht zu funktionieren, das ich bei der Ausgabe auf der Konsole "null" erhalte.
Ich würde mich über Hilfe freuen
Danke
Mi
 
Hier in meiner main
Java:
....
import de.mima.programm.Einstellungen;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
....
        Einstellungen prgEin = new Einstellungen();
        String dateiname = "Einstellungen.dat";
        schreibePrgEinHD(dateiname, prgEin);

        // Lade Daten in ein neues Objekt
        Einstellungen neuePgrEin = new Einstellungen();
        neuePgrEin = ladePrgEinHD(dateiname);

        System.out.println("neue Quell Verzeichnis : " + neuePgrEin.gQuellVerzeichnis());
        System.out.println("neue Ziel Verzeichnis  : " + neuePgrEin.gZielVerzeichnis());

Die Ausgabe ist wie folgt
Java:
neue Quell Verzeichnis : null
neue Ziel Verzeichnis  : null
BUILD SUCCESSFUL (total time: 0 seconds)
Klasse Einsellungen
Code:
...
import java.io.File;
import java.io.Serializable;
import java.util.ArrayList;
...
public class Einstellungen implements Serializable {

    // Variablendeklaration

    private String quellPfadVerzeichnis = "N:/SoundStation/unsortiert";
    private File   quellVerzeichnis;
    private String zielPfadVerzeichnis = "N:/SoundStation/01ziel";
    private File   zielVerzeichnis;
    private boolean mitLeerzeichen = true;
 
    // Konstruktoren
    public Einstellungen() {
        this.quellVerzeichnis = new File(this.quellPfadVerzeichnis);
        this.zielVerzeichnis = new File(this.zielPfadVerzeichnis);
    } // Konstruktor quelleVerzeichnis, zielVerzeichnis
...
 
Also auf den ersten Blick kann ich da keine Fehler erkennen.
Einziges Manko: Du schließt dein FileOutputStream / FileInputStream nie - davon sollte der "Fehler" aber nicht kommen.

Bekommst du denn irgendwelche Exceptions?
 
Netbeans bietet mir an die ObjectOutputStreams zu convertieren nach "to try-with-resources"
Danach sind die Close Anweisungen verschwunden.
Was sind denn diese "try-with-resources"?
 

Zurück
Oben