Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Objekte binär speichern und später wieder einlesen?
Ich habe eine TreeMap-Struktur, die Strings auf Objekte vom selbstdefinierten Typ ReportEntry abbildet. Nun möchte ich eine solche Struktur, die Daten enthält, gerne als Binärdatei auf der HDD speichern und später wieder einlesen. Als JDK Umgebung muss ich 1.4 verwenden. Hier der bisherige Quellcode:
Code:
public static void storeReportMap()
{
try
{
FileOutputStream fos = new FileOutputStream("smokeTestSummary.bin");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(ReportMap);
oos.flush();
oos.close();
// TODO: Einlesetest ... !!!
FileInputStream fis = new FileInputStream("smokeTestSummary.bin");
ObjectInputStream ois = new ObjectInputStream(fis);
ReportMap = (Map) ois.readObject();
Iterator it = ReportMap.keySet().iterator();
while (it.hasNext())
{
temp = (ReportEntry) ReportMap.get(it.next());
System.out.println("Department: " + temp.getDepartment());
}
System.exit(0);
} catch (Exception e)
{
//
}
}
Normalerweise sollte die Print-Ausgabe temp.getDeparment() die entsprechenden zurückliefern. Irgendetwas mache ich aber wohl scheinbar falsch ...
Wäre nicht schlecht wenn du sagen würdest was scheinbar falsch ist. Eine Fehlermeldung wäre da schon sehr hilfreich. Sind alle Objekte in der TreeMap serialisierbar?
Mhhh genauso war bei auch alles programmiert bis auf, dass ich die Klasse ReportEntry nicht als "implements Serializable" erstellt hatte. Nachdem ich das hinzugefügt hatte, kam auch die gewünschte Ausgabe (die hatte vorher gefehlt).
Nur zum Verständignis: Warum funktioniert es jetzt? Definiert das Interface Serializable die Fähigkeiten Objekte für Java "korrekt" binär zu speichern?
Ja so ungefähr... - Serializable markiert die Objekte als "serialisierbar", d.h. man hat die Möglichkeit binäre Daten in Stringform zu übertragen... beim ObjectOutputStream ist das also essentiell wichtig. Normal kommen da imho aber auch entsprechende Exceptions falls man Objekte serialisieren will, die das gar nicht können
Naja okay, bei mir kamen diese Exceptions aber warum auch immer nicht. Hauptsache es funktioniert jetzt und ich verstehe auch wieso dem so ist. Herzlichen Dank nochmal für Eure Hilfe!
Ohhh, du hast Recht. Tja, der Quellcode war ja auch nur ein erster Test. Da habe ich an sowas noch gar nicht gedacht ... außerdem war nicht ICH das, sondern der QuickFix von Eclipse