Announcement

Collapse
No announcement yet.

ObjectOutputStream

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ObjectOutputStream

    Hallo Zusammen,

    wieder habe ich eine Übung die mich zum grübeln bringt.

    Es geht um Serialisierung. In der Übung wird eine Klasse Time erstellt:
    [highlight=java]
    import java.io.*;
    import ausgabeAblauf.AusgabeAblauf;

    public class Time implements Serializable
    {
    AusgabeAblauf ab = new AusgabeAblauf();

    private int hour;
    private int minute;

    public Time(int hour, int minute)
    {
    this.hour = hour;
    this.minute = minute;
    ab.Abl("Konstruktor " + hour + ":" + minute);
    }

    public String toString()
    {
    ab.Abl("toString() " + hour + ":" + minute);
    return hour + ":" + minute;
    }
    }
    [/highlight]

    dann wird in der Main-Klasse ein ObjectOutputStream aus FileOutputStream erzeugt und die Zeit wiedergegeben.
    [highlight=java]
    import java.io.*;
    import java.util.*;

    import ausgabeAblauf.AusgabeAblauf;
    /**
    * @author Alexander.Locher
    *
    */
    public class SerialisierungBeispiel
    {
    AusgabeAblauf ab = new AusgabeAblauf();
    private static final long serialVersionUID = 1L;

    public static void main(String[] args)
    {
    try
    {
    FileOutputStream fs = new FileOutputStream("C:\\tmp\\OutputStream.txt");
    ObjectOutputStream os = new ObjectOutputStream(fs);
    os.writeInt(123);
    os.writeObject("Nanu?");
    os.writeObject(new Time(10,30));
    os.writeObject(new Time(11,25).toString());
    os.close();
    }
    catch (IOException e)
    {
    AusgabeAblauf ab = new AusgabeAblauf();
    ab.Err(e.toString());
    }
    }

    }
    [/highlight]

    Das Ergebnis in der Text-Datei ist::
    ¬í w {t Nanu?sr TimeDof¨“ŸB% I hhhhI mmmmL abt LausgabeAblauf/AusgabeAblauf;xp
    sr ausgabeAblauf.AusgabeAblauf‡×¡~QXv L sdft Ljava/text/SimpleDateFormat;xpsr java.text.SimpleDateFormatBCÉÚ“”5 I serialVersionOnStreamL defaultCenturyStartt Ljava/util/Date;L
    formatDatat Ljava/text/DateFormatSymbols;L localet Ljava/util/Locale;L patternt Ljava/lang/String;xr java.text.DateFormatd,¡äÂ&ü L calendart Ljava/util/Calendar;L numberFormatt Ljava/text/NumberFormat;xr java.text.FormatûؼéC xpsr java.util.GregorianCalendar=×Öå°ÐÁ J gregorianCutoverxr java.util.CalendaræêMÈÜ[Ž Z areFieldsSetI firstDayOfWeekZ isTimeSetZ lenientI minimalDaysInFirstWeekI nextStampI serialVersionOnStreamJ time[ fieldst [I[ isSett [ZL zonet Ljava/util/TimeZone;xp     6 &Žur [IMº`&vê²¥ xp   Ü  
    I       7 ] 6î€ ur [ZW 9¸]â xp sr java.util.SimpleTimeZoneúg]`Ñ^õ¦ I
    dstSavingsI endDayI endDayOfWeekI endModeI endMonthI endTimeI endTimeModeI rawOffsetI serialVersionOnStreamI startDayI startDayOfWeekI startModeI
    startMonthI startTimeI
    startTimeModeI startYearZ useDaylight[ monthLengtht [Bxr java.util.TimeZone1³éõwD¬¡ L I .............

    Warum? Ich bearbeite doch nur Integer?

    Oder ich habe noch nicht verstanden was Serialisieren bedeutet.

    Vielen Dank für Eure Hilfe.

    Gruß Lerando

  • #2
    Es bedeutet, die Klasse selbst wie sie mit allen ihren zurzeit vorhandenen Eigenschaften ist wird gespeichert. Es wird kein einzelner Wert aus der Klasse gespeichert, sondern alle Werte.

    Beim einlesen erhälst du dann eben nicht auch nur einen Wert, sondern die ganze Klasse in dem Zustand, in dem sie beim speichern war.

    http://openbook.galileodesign.de/jav...0004041F04610B

    Änderst du deine Klasse kannst du ggf. schon gespeicherte Klassen nicht mehr einlesen
    Christian

    Comment


    • #3
      Vielen Dank, das hat mir sehr geholfen.

      Gruß

      Lerando

      Comment

      Working...
      X