Luegisdorf
- Forum-Beiträge: 14
01.06.2013, 16:06:22 via Website
01.06.2013 16:06:22 via Website
Hallo wieder mal
Meine App speichert strukturierte Daten ein eine Datei. Die Daten sind als Membervariablen einer Klassenstruktur vorhanden. Ich verwende ich eine Se- und De-Serialisierung der Klasse.
Nun möchte ich aber für künftige Änderungen vorsorgen und die Daten versioniert abspeichern.
Das ganze habe ich eigentlich umgesetzt und zwar wird die ganze Klassenstruktur mit einem mehrfach verschachtelten Array des Typs Serializable[] gepackt und entpackt.
Leider ist vor allem das Entpacken extrem langsam. Wenn ich einfach alle Objekte (die natürlich das Serializable implementieren) in eine ArrayList packe und diese über ObjectIntputStream.readObject() geht das zack zack. An was kann das liegen?
Und was ich mich frage: Kann ich die Daten auch nach einem OS-Wechsel wieder lesen? Wie gesagt, 'meine' Struktur beinhaltet nur Serializable[Serializable[] oder int, oder String, oder Long] ...
Ich liebäugle, wieder die Standard-Serializierung zu verwenden und alles husch in eine ArrayList ... aber wie kann mein Programm aktiv darauf reagieren, wenn die Membervariablenliste geändert hat oder das OS/Plattformversion ändert? Ich habe zwar eine UID aber die sorgt standardmässig nur dafür, dass er merkt, dass das Objekt inzwischen nicht mehr erstellt werden kann ... weil eben die Struktur geändert hat.
Vielleicht kann mir ja jemand ein Codebeispiel machen, wie das mit dem reagieren von Änderungen in der Standardserialisation funktioniert:
Sagen wir, ich hätte folgende Klasse
class a implements Serializable
{
int i = 1;
String s = "bla";
static final long serialVersionUID = 1;
}
das pack ich dann ... und später
Meine App speichert strukturierte Daten ein eine Datei. Die Daten sind als Membervariablen einer Klassenstruktur vorhanden. Ich verwende ich eine Se- und De-Serialisierung der Klasse.
Nun möchte ich aber für künftige Änderungen vorsorgen und die Daten versioniert abspeichern.
Das ganze habe ich eigentlich umgesetzt und zwar wird die ganze Klassenstruktur mit einem mehrfach verschachtelten Array des Typs Serializable[] gepackt und entpackt.
Leider ist vor allem das Entpacken extrem langsam. Wenn ich einfach alle Objekte (die natürlich das Serializable implementieren) in eine ArrayList packe und diese über ObjectIntputStream.readObject() geht das zack zack. An was kann das liegen?
Und was ich mich frage: Kann ich die Daten auch nach einem OS-Wechsel wieder lesen? Wie gesagt, 'meine' Struktur beinhaltet nur Serializable[Serializable[] oder int, oder String, oder Long] ...
Ich liebäugle, wieder die Standard-Serializierung zu verwenden und alles husch in eine ArrayList ... aber wie kann mein Programm aktiv darauf reagieren, wenn die Membervariablenliste geändert hat oder das OS/Plattformversion ändert? Ich habe zwar eine UID aber die sorgt standardmässig nur dafür, dass er merkt, dass das Objekt inzwischen nicht mehr erstellt werden kann ... weil eben die Struktur geändert hat.
Vielleicht kann mir ja jemand ein Codebeispiel machen, wie das mit dem reagieren von Änderungen in der Standardserialisation funktioniert:
Sagen wir, ich hätte folgende Klasse
class a implements Serializable
{
int i = 1;
String s = "bla";
static final long serialVersionUID = 1;
}
das pack ich dann ... und später
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.