Wann nutze ich einen ObjectInputStream und wann einen BufferedReader?

... komplette Frage anzeigen

2 Antworten

Generell ist ein Stream eine Klasse, welche einen Fluss an Informationen entgegen nimmt.

Ein "Reader" eine Klasse, was bereits den Inhalt des Streams verwertet und z.B. "einfacher Lesbar" macht. 

Was nun deine beiden Klassen unterscheidet: 

ObjectInputStream: Hierbei wird ein serialisierbares Java-Objekt aus einer Datenquelle gelesen. Hierbei handelt es sich um eine Java-Klasse.

Ein BufferedReader erwartet als Parameter einen InputStream und liest dann zeilenweise den Inhalt aus.

Entsprechend benutzt du ersteres wenn du z.B. ein Komplexes Objekt in eine Datei speichern und anschließend wieder laden möchtest.

Zweiteres wenn du nur einen Text einlesen möchtest und es dir daher leichter machen willst.

Wenn ich jetzt z.B.: eine Liste in ein txt schreiben will, Stream oder bufferedReader

Zum schreiben benötigst du einen Outputstream bzw. einen Writer.

Was nun die Liste betrifft, hast du zwei Optionen (Sofern es sich nicht um komplexe Objekte handelt): Du liest jeden Eintrag der Liste aus, und schreibst ihn in eine Datei oder du nimmst die Liste direkt als Objekt und schreibst diese in die Datei.

Da kannst du frei selbst entscheiden: ObjectOutputStream oder Filewriter.  - Den unterschied würdest du in der Datei sehen, denn die über den Objectstream geschriebene Datei ist nicht im klartext lesbar.

Beinhaltet deine Liste komplexere Objekte, z.B. eigene Klassen von dir, so kannst du nur den ObjectOutputstream nehmen, zudem muss deine Klasse Serializable implementieren.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von meSembi
18.04.2016, 13:38

Boah! Ein ganz großes Dankeschön, jetzt verstehe ich es endlich :D

0

Ein Stream ist ein Stream, ein Reader ist ein Reader...

Man benutzt Reader um Streams etwas bequemer lesen zu können, insbesondere, wenn die Streams text enthalten.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von meSembi
17.04.2016, 20:38

Ok, danke :)

Heißt das also, der BufferedReader "steht" übern Stream?

Wenn ich jetzt z.B.: eine Liste in ein txt schreiben will, Stream oder bufferedReader

0

Was möchtest Du wissen?