Properties serializable machen

Kababär

Top Contributor
Hi,

für meine derzeitige Anwendung würde ich gerne meine Objekte in eine Datei schreiben. Bisher habe ich mir ein eigenes Format ausgedacht (.csv-Format), welches ich aber nicht so prickelnd finde. Es sind zwar nur ein paar Attribute zu speichern, aber dennoch hätte ich gerne ein komfortablere Lösung. Die Objekte sollen dann in einer TableView dargestellt werden, weshalb ich Properties und eine Obversable List verwende.
Jetzt habe ich das Problem, dass die Properties wohl nicht serializable sind, denn ich bekomme beim Schreiben folgende Fehlermeldung:
Caused by: java.io.NotSerializableException: javafx.beans.property.SimpleStringProperty

Meine "Model"-Klasse sieht so aus:
Code:
public class Module implements Serializable {

    /**
     * Serialize ID
     */
    private static final long serialVersionUID = 1L;

    public StringProperty name;

    public IntegerProperty semester;

    public DoubleProperty grade;

    public StringProperty teacher;

    public IntegerProperty ects;

    public IntegerProperty tries;

    public ObjectProperty<LocalDate> date;

    //weiter getter (für Inhalt und einmal für Property) und settter

Wie würdet ihr das nun lösen? Ich würde nur ungern auf die Properties verzichten wollen ...
Vielen Dank im voraus.
 

Kababär

Top Contributor
Dass die oben genannte Exception fliegt wenn ich die Objekte in eine Datei schreiben will.
Das hier ist sind die Methoden zum lesen/schreiben der Objekte aus der Datei:
Code:
public class FileSerialization {

    /**
     * The standard path for the data file
     */
    private final static String programmPath = "meinPfad";

    /**
     * Writing module object to file.
     *
     * @param module
     */
    public void serializeAddress(Module module) {

        FileOutputStream fout = null;
        ObjectOutputStream oos = null;

        try {

            if (Files.exists(Paths.get(programmPath), LinkOption.NOFOLLOW_LINKS)) {
                System.out.println("Datei existiert bereits.");
                Files.delete(Paths.get(programmPath));
                System.out.println("Datei gelöscht.");
            } else {
                System.out.println("Datei existiert nicht.");
                Files.createFile(Paths.get(programmPath));
                Files.setAttribute(Paths.get(programmPath), "dos:hidden", true);
            }
            fout = new FileOutputStream(programmPath);
            oos = new ObjectOutputStream(fout);
            oos.writeObject(module);

            System.out.println("Done");

        } catch (Exception ex) {

            ex.printStackTrace();

        } finally {

            if (fout != null) {
                try {
                    fout.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            if (oos != null) {
                try {
                    oos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
    }

  
    /**
     * Reading a module from file.
     *
     * @param filename
     * @return
     */
    public Module deserializeAddress() {

        Module module = null;
        String filename = programmPath;
        FileInputStream fin = null;
        ObjectInputStream ois = null;

        try {

            fin = new FileInputStream(filename);
            ois = new ObjectInputStream(fin);
            module = (Module) ois.readObject();

        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {

            if (fin != null) {
                try {
                    fin.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            if (ois != null) {
                try {
                    ois.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }

        return module;

    }
 

knilch

Bekanntes Mitglied
Hi Kababär,
Ich hatte auch schon mal ein ähnliches Problem.
Damit konnte ich es lösen:
Statt implements Serializable hab ich implements Externalizable genommen, und dann die beiden Methoden: readExternal und writeExternal überschrieben. Damit konnte ich die Serialisierung dann machen.
Hier ein Beispiel:
Java:
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import javafx.beans.property.SimpleStringProperty;

public class Packet implements Externalizable {
    private static final long serialVersionUID = -8256294089416034037L;
    private SimpleStringProperty varName = new SimpleStringProperty("");
    private SimpleStringProperty varValue = new SimpleStringProperty("");
 
    public Packet() {
        this("", "");
    }
    public Packet(String varName, String varValue) {
        setVarName(varName);
        setVarValue(varValue);
    }
    public String getVarName() {
        return varName.get();
    }
    public void setVarName(String var) {
        varName.set(var);
    }
   
    public String getVarValue() {
        return varValue.get();
    }
    public void setVarValue(String value) {
        varValue.set(value);
    }
    public SimpleStringProperty getVarNameProperty() {
        return varName;
    }
    public SimpleStringProperty getVarValueProperty() {
        return varValue;
    }
 
    @Override
    public String toString() {
        return getVarName() + ": " + getVarValue();
    }
 
    @Override
    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        setVarName((String) in.readObject());
        setVarValue((String) in.readObject()); 
    }
 
    @Override
    public void writeExternal(ObjectOutput out) throws IOException {
        out.writeObject(getVarName());
        out.writeObject(getVarValue());
    }
}
 

Kababär

Top Contributor
Ich glaube der Aufwand für eine H2DB + JPA wäre deutlich größer als die Objekte einfach zu de/serialisieren.. wobei beides für mich Neuland ist.

knilch ich probier das mal aus, danke :)

Edit: Danke knilch, scheint zu funktionieren :)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Ein paar Fragen zu .properties und .css Allgemeine Java-Themen 6
S Test mit Werten aus der .properties Allgemeine Java-Themen 4
S class path resource [config.properties}] cannot be opened because it does not exist Allgemeine Java-Themen 4
ralfb1105 Classpath Directory fuer Properties File Allgemeine Java-Themen 2
KeVoZ_ Properties mit String auslesen Allgemeine Java-Themen 11
thet1983 Input/Output read properties file from classpath Allgemeine Java-Themen 3
Baldur BeanInfo für Properties-UI? Allgemeine Java-Themen 1
J Properties file ändern Allgemeine Java-Themen 12
B Objekte anhand von Properties file Allgemeine Java-Themen 41
W Input/Output Kann .properties Datei in kompilierter .jar nicht ändern Allgemeine Java-Themen 2
Thallius Speicherverhalten von Properties und mehreren Threads Allgemeine Java-Themen 5
T [log4j] Wie nutzt man log4j.properties? Allgemeine Java-Themen 7
I Best Practice Properties auslesen und splitten (RegExp?) Allgemeine Java-Themen 0
OnDemand Lesen aus Properties Allgemeine Java-Themen 7
D JAVA - Properties Datei mit Userdaten Allgemeine Java-Themen 7
M StripesResources.properties Allgemeine Java-Themen 2
GUI-Programmer Mehr als Properties Allgemeine Java-Themen 6
C Dynamisches und sortiertes Auslesen von Properties Allgemeine Java-Themen 2
Mr. Pink Erste Schritte Checkstyle.properties Allgemeine Java-Themen 3
B Properties File Liste Allgemeine Java-Themen 3
X Probleme mit meinem Properties Allgemeine Java-Themen 9
T Wahrscheinlich Problem mit log4j.properties Allgemeine Java-Themen 19
D Properties Datei, Eingabequelle Allgemeine Java-Themen 6
S Stilfrage bezüglich Beans mit Collection-Properties Allgemeine Java-Themen 2
C JAR, Pfad und Properties Allgemeine Java-Themen 17
R Properties Datei aus Applikationsverzeichnis lesen Allgemeine Java-Themen 5
T Properties Datei nicht jedes mal neu schreiben? Allgemeine Java-Themen 2
reibi Separator in java.util.Properties-Files Allgemeine Java-Themen 3
K Serialisierung in Properties-Datei möglich? Allgemeine Java-Themen 3
M Probleme mit UTF-8 und properties Allgemeine Java-Themen 6
C log4j.properties wird nicht verwendet?? Allgemeine Java-Themen 3
T Properties Datei nicht löschbar Allgemeine Java-Themen 8
S Properties binden Allgemeine Java-Themen 2
nrg Knotenpunkte in Properties Allgemeine Java-Themen 9
U Properties in Jar Files Allgemeine Java-Themen 3
S Properties-Dateien anwenden Allgemeine Java-Themen 8
G Alternative zu .properties Dateien Allgemeine Java-Themen 20
nabla Gutes einlesen von Konfigurationsdateien (Properties?) Allgemeine Java-Themen 11
E Properties +SerialPort Allgemeine Java-Themen 9
H Java Properties Allgemeine Java-Themen 5
A kann nicht auf properties außerhalb jar zugreifen Allgemeine Java-Themen 3
T CP Problem: Webstart + Logging properties file + eigener Handler Allgemeine Java-Themen 7
Y Properties verwalten! Allgemeine Java-Themen 3
G externe Properties datei aus Jar File heraus lesen Allgemeine Java-Themen 12
M Databinding von Object zu properties-Datei Allgemeine Java-Themen 10
F Properties verschlüsselt speichern Allgemeine Java-Themen 5
W Properties-Klasse: mehrere Parameter-Belegungen übergeben? Allgemeine Java-Themen 2
K settings.properties in den src-ordner schreiben Allgemeine Java-Themen 2
J Wo werden die System properties gespeichert Allgemeine Java-Themen 12
DEvent log4j, commons logging, log4j.properties and co Allgemeine Java-Themen 12
D Ordner mit *.properties in classpath ? Allgemeine Java-Themen 5
P Encoding-Probleme bei Properties-Dateien Allgemeine Java-Themen 5
A Hardware Properties auslesen Allgemeine Java-Themen 10
P Properties liest nicht alles aus Datei aus Allgemeine Java-Themen 17
J Properties sortieren Allgemeine Java-Themen 6
I Properties.contains("Hell*orld"); Allgemeine Java-Themen 14
G Probleme beim Sichern von Properties Allgemeine Java-Themen 2
N Java Properties Allgemeine Java-Themen 14
L "globale" properties Datei Allgemeine Java-Themen 4
V Properties Key als String mit =? Allgemeine Java-Themen 3
G Beans und transiente Properties Allgemeine Java-Themen 4
MQue properties- Datei Allgemeine Java-Themen 2
M Pattern aus Properties Allgemeine Java-Themen 3
R Problem bei schreiben von properties Allgemeine Java-Themen 6
R Properties Datei ändern Allgemeine Java-Themen 4
P log4j: Übersicht der Properties Allgemeine Java-Themen 5
R Properties dateien in Jar beschreiben Allgemeine Java-Themen 2
L properties auslesen funktioniert nicht(java.util.Properties) Allgemeine Java-Themen 3
G properties datei aktualisieren Allgemeine Java-Themen 4
J Properties editieren. Allgemeine Java-Themen 10
V log4j.properties wird in der jar Datei nicht gefunden? Allgemeine Java-Themen 2
V INI Files, Properties etc. Allgemeine Java-Themen 7
K Cast von Properties und Hashmap Allgemeine Java-Themen 9
A Mehrzeiligen Eintrag in Ressourcebundle (.properties-Datei) Allgemeine Java-Themen 8
B Wohin mit log4j.properties Allgemeine Java-Themen 2
B MannoMann Properties Allgemeine Java-Themen 12
G Properties Datei verschlüsseln. WIE? Allgemeine Java-Themen 6
G Einzelne Keys aus Properties-Datei auslesen Allgemeine Java-Themen 4
S Zugriff auf Properties-Datei Allgemeine Java-Themen 10
J ResourceBundle / properties-datei während der Laufzeit verän Allgemeine Java-Themen 6
T Komische Zeichen im Zusammenhang mit Serializable interface Allgemeine Java-Themen 13
M Klassen Serializable Exception Allgemeine Java-Themen 1
J Interface Serializable Methodensignatur Allgemeine Java-Themen 2
F Sinn des Serializable Interfaces Allgemeine Java-Themen 8
C Serialisierung ohne Serializable Allgemeine Java-Themen 4
dayaftereh Serializable und Object In/Out Stream Allgemeine Java-Themen 2
R Interface Serializable technische Begrenzung Allgemeine Java-Themen 2
foobar Object to byte[] ohne Serializable Allgemeine Java-Themen 6
G sun.awt.image.OffScreenImage Serializable machen Allgemeine Java-Themen 5
J Serializable + callBack-Methoden Allgemeine Java-Themen 4
J Wieso implementiert HTTPServlet Serializable? Allgemeine Java-Themen 2
M Reflection und Serializable Allgemeine Java-Themen 5
deetee Wie nennt man Interfaces wie Serializable? Allgemeine Java-Themen 8
J Probleme mit Serializable Allgemeine Java-Themen 3
S Build-Zeitpunt (Datum und Uhrzeit) irgendwie während der Laufzeit zugänglich machen..? Allgemeine Java-Themen 4
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
berserkerdq2 Ist es schlechter Programmierstyle mehrere Panes aufeinander zu machen? Allgemeine Java-Themen 1
X Regex mit mehreren Bedingungen machen Allgemeine Java-Themen 5
B Mit Java Click bei (x,y) machen? Allgemeine Java-Themen 6
A Objekt aus anderen Objekten machen Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben