Da man ja auch mal gerne Daten behalten möchte um sie nicht immer neu eingeben zu müssen habe ich mich mal in die Serialisierung eingelesen. Das hat in einigen Tests aus super geklappt und verlief wie ich das erhofft habe.
Jetzt wollt ich das mal auf mein größeres Projekt umsetzen und hier klappt das nicht mehr.
Zunächst habe ich versuch ein statisches Objekt zu serialisieren, was wohl mit writeObject() aus dem ObjectOutputStream nicht möglich ist.
Es handelt sich um ein Adressbuchobjekt:
Also das Serialisieren von 'adressbuch' klappt nicht und so habe ich mir überlegt die Gruppenliste & die beiden Integer zu serialisieren und sie schließlich dem 'adressbuch' beim Deserialisieren wieder zurückzugeben.
Der Serialisierungscode sieht nun folgendermaßen aus:
Alle Klassen die etwas mit der Serialisierung zu tun haben impelemtieren Serializable aus java.io.
Wenn ich jetzt die Methode abspeichern() aufrufe gibt er mir true zurück (was ja bedeutet das er in keinem catch-Zweig war), aber es ist nirgends eine Datei Adressbuch.dat zu finden.
Wäre sehr dankbar wenn mir jemand auf die Sprünge helfen könnte oder evtl. eine annehmbare Alternative weiß.
Danke & Gruß
ryoshi
Jetzt wollt ich das mal auf mein größeres Projekt umsetzen und hier klappt das nicht mehr.
Zunächst habe ich versuch ein statisches Objekt zu serialisieren, was wohl mit writeObject() aus dem ObjectOutputStream nicht möglich ist.
Es handelt sich um ein Adressbuchobjekt:
Java:
public class Adressbuch implements Serializable
{
private static final long serialVersionUID = 8595141956446128592L;
private static Adressbuch adressbuch = new Adressbuch();
private List<Gruppe> gruppen;
private int kontakt_zaehler;
private int gruppen_zaehler;
Konstruktor & Methoden
}
Also das Serialisieren von 'adressbuch' klappt nicht und so habe ich mir überlegt die Gruppenliste & die beiden Integer zu serialisieren und sie schließlich dem 'adressbuch' beim Deserialisieren wieder zurückzugeben.
Der Serialisierungscode sieht nun folgendermaßen aus:
Java:
public static boolean abspeichern()
{
try
{
FileOutputStream fs = new FileOutputStream("Adressbuch.dat");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeInt(Adressbuch.gibAdressbuch().gibGruppenZaehler());
os.writeInt(Adressbuch.gibAdressbuch().gibKontaktZaehler());
List gruppen = Adressbuch.gibAdressbuch().gibGruppenListe();
for(int i = 0; i < gruppen.size(); i++)
os.writeObject(gruppen.get(i));
os.close();
}
catch(IOException ausnahme)
{
System.err.println("IOException");
return false;
}
return true;
}
public static boolean wiederherstellen()
{
String pfad = "Adressbuch.dat";
if(Dateiverwaltung.istVorhanden(pfad) && Dateiverwaltung.istLesUndSchreibbar(pfad))
{
try
{
FileInputStream fs = new FileInputStream(pfad);
ObjectInputStream os = new ObjectInputStream(fs);
Adressbuch.gibAdressbuch().setzeGruppenZaehler(os.readInt());
Adressbuch.gibAdressbuch().setzeKontaktZaehler(os.readInt());
Gruppe gruppe;
while((gruppe = (Gruppe) os.readObject()) != null)
{
Adressbuch.gibAdressbuch().hinzufuegenGruppe(gruppe);
}
}
catch (IOException ausnahme)
{
return false;
}
catch (ClassNotFoundException ausnahme)
{
return false;
}
return true;
}
else
return false;
}
Alle Klassen die etwas mit der Serialisierung zu tun haben impelemtieren Serializable aus java.io.
Wenn ich jetzt die Methode abspeichern() aufrufe gibt er mir true zurück (was ja bedeutet das er in keinem catch-Zweig war), aber es ist nirgends eine Datei Adressbuch.dat zu finden.
Wäre sehr dankbar wenn mir jemand auf die Sprünge helfen könnte oder evtl. eine annehmbare Alternative weiß.
Danke & Gruß
ryoshi
Zuletzt bearbeitet: