Datenströme (Streams) Flashcards
Erklärung Datenströme
Zugriff auf Datenquellen und senken wird über Streams realisiert
Ein Datenstrom ist eine geordnete Folge von Bytes, deren Länge in der Regel nicht im vorhinein bekannt ist
Ein Datenstrom zum Lesen heißt Eingabestrom
Ein Datenstrom zum Schreiben heißt Ausgabestrom
zentrale Methode für Ein- und Ausgabeströme
für Eingabeströme: Methode read zum Lesen von n Bytes
für Ausgabeströme: Methode write zum Schreiben von n Bytes
Gibt es eine Methode, mit der man bei einem Eingabestrom zuverlässig feststellen kann, wieviele Bytes er noch enthält?
Nein, auch nicht in available()!!!
InputStream
abstrakte Oberklasse aller Eingabeströme mit byte-weisem Zugriff
OutputStream
abtrakte Oberklasse aller Ausgabeströme mit byte-weisem Zugriff
Reader
abstrakte Oberklasse aller Eingabeströme
mit zeichenweisem Zugrif
writer
abstrakte Oberklasse aller Ausgabeströme
mit zeichenweisem Zugrif
InputStreamReader
liest über einen InputStream aus Datenquellen; konvertiert Bytes in Zeichen
OutputStreamWriter
schreibt über einen OutputStream in Datensenken; konvertiert Zeichen in Bytes
BufferedReader
liest über einen Reader aus Datenquellen;
hat bequeme Methode zum Lesen einer Zeile
von Zeichen
PrintWriter
schreibt über einen Writer in Datensenken; hat bequeme Methoden zum Schreiben
von elementaren Werten und Stringdarstellungen von Objekten
try mit Ressourcen
try (InputStream is = new FileInputStream(pfad)) { is.read(); ... } catch (Exception e) { ... }
Hinter try steht in Klammern die Anweisung zum Erzeugen des
IO-Objekts (im Beispiel Objekt der Klasse FileInputStream).
Bei mehreren Objekten werden die Anweisungen durch ; getrennt.
Die (optionale) Ausnahmebehandlung bezieht sich nur auf
Ausnahmen während des Zugriffs auf die erzeugten IO-Objekte.
Dieses Code-Schema ermöglicht auch Zugriff auf andere externe
Ressourcen, z. B. Datenbanken. Deshalb der Name try mit Ressourcen.
Was wird durch try mit Ressourcen einfacher?
Es gibt keinen Programmcode für…
…Fehlerbehandlung beim Erzeugen der IO-Objekte
…Schließen der erzeugten IO-Objekte; Objekte werden automatisch
geschlossen (in umgekehrter Reihenfolge zum Erzeugen)
…Fehlerbehandlung beim Schließen der erzeugten IO-Objekte