12.3 Übersicht über wichtige Stream- und WriterReader
Alle Datenströme sind als Klassen repräsentiert, die im Paket java.io gesammelt sind. In den ersten Java-Versionen konnten nur Primitive beziehungsweise Bytes und Byte-Arrays geschrieben und gelesen werden. Doch seit Java 1.1 gibt es für Byteströme und Unicodezeichen-Ströme getrennte Klassen. Das macht aus mehreren Gründen Sinn: Das Einlesen von Unicode-Dateien ist vereinfacht, und Daten müssen nicht auf festgelegten Zeichensätzen arbeiten, ja wir bekommen vom Konvertieren von Unicode nach Bytes überhaupt nichts mit. Ein anderer Vorteil ist die gewonnene Einlesegeschwindigkeit. Die meisten Byteströme lesen und schreiben nur dann ein Zeichen, wenn sie es brauchen.
12.3.1 Die abstrakten Basisklassen
Die komplexen Eingabeklassen wie FileInputStream, ByteArrayOutputStream oder BufferedWriter basieren auf einer abstrakte Klasse OutputSteam, die eine Schnittstelle für einzulesende Bytes ist. Im Allgemeinen können wir vier Kategorien bilden: Klassen zur Ein-/Ausgabe von Bytes (oder Byte-Arrays) und Klassen zur Ein-/Ausgabe von Unicode-Zeichen (oder Strings). Die aufgeführten Klassen geben Methoden vor, die für jede implementierende Klasse von Interesse sind.
Basisklasse für
|
Bytes (oder Byte-Arrays)
|
Zeichen (oder Zeichen-Arrays)
|
Eingabe
|
InputStream
|
Reader
|
Ausgabe
|
OutputStream
|
Writer
|
12.3.2 Übersicht über Ein-/Ausgabeklassen
Die folgenden Tabellen geben eine Übersicht über die wichtigsten Eingabe- und Ausgabe-Klassen.
Byte-Stream-Klasse für
die Eingabe
|
Zeichen-Stream-Klasse
für die Eingabe
|
Beschreibung
|
InputStream
|
Reader
|
Abstrakte Klasse für Zeicheneingabe und Byte-Arrays
|
BufferedInputStream
|
BufferedReader
|
Puffert die Eingabe.
|
LineNumberInputStream
|
LineNumberReader
|
Merkt sich Zeilennummern beim Lesen.
|
ByteArrayInputStream
|
CharArrayReader
|
Liest Zeichen-Arrays oder Byte-Arrays.
|
(keine Entsprechung)
|
InputStreamReader
|
Wandelt Byte-Stream in Zeichen-Stream um, Bindeglied zwischen Bytes und Zeichen.
|
DataInputStream
|
(keine Entsprechung)
|
Liest Primitive und auch UTF-8.
|
FilterInputStream
|
FilterReader
|
Abstrakte Klassse für gefilterte Eingabe
|
PushbackInputStream
|
PushbackReader
|
Erlaubt gelesene Zeichen wieder in den Stream zu geben.
|
PipedInputStream
|
PipedReader
|
Liest von einem
PipedWriter oder
PipedOutputStream.
|
StringBufferInputStream unter 1.1 nicht mehr erwünscht
|
StringReader
|
Liest aus Strings.
|
SequenceInputStream
|
(keine Entsprechung)
|
Verbindet zwei andere InputStreams.
|
TelepathicInputStream
|
TelepathicWriter
|
Überträgt Daten mittels Telepathie.5
|
Tabelle 12.1 Wichtige Eingabeklassen
Byte-Stream-Klasse für die
Ausgabe
|
Zeichen-Stream Klasse für die Ausgabe
|
Beschreibung
|
OutputStream
|
Writer
|
Abstrakte Klasse für Zeichenausgabe oder Byte-Ausgabe
|
BufferedOutputStream
|
BufferedWriter
|
Ausgabe des Puffers, nutzt passendes Zeilenendezeichen
|
ByteArrayOutputStream
|
CharArrayWriter
|
Schreibt Arrays.
|
DataOutputStream
|
(kein Entsprechung)
|
Schreibt Primitive und auch UTF-8.
|
(keine Entsprechung)
|
OutputStreamWriter
|
Übersetzt Zeichen-Stream in Byte-Stream.
|
FileOutputStream
|
FileWriter
|
Schreibt in eine Datei.
|
PrintStream
|
PrintWriter
|
Schreibt Werte (oder Objekte).
|
PipedOutputStream
|
PipedWriter
|
Schreibt in eine Pipe.
|
(keine)
|
StringWriter
|
Schreibt in einen String.
|
Tabelle 12.2 Wichtige Ausgabeklassen
|