homedukeOOP mit Java: Datenströme Prof. Dr. Uwe Schmidt FH Wedel

Datenströme

weiter

weiter

streams

byte orientierte Datenströme für die Ein- und Ausgabe und interne Kommunikation zwischen Threads.
weiter
char orientierte Datenströme.
weiter
pipes
angelehnt an UNIX pipes:
Datenfluss in eine Richtung
weiter
definiert Datenströme zur Ein- und Ausgabe
weiter
Applikationen
haben Datenströme vordefiniert:
 
globale Objekte aus der Klasse System im Paket java.lang
 
public
static
final
InputStream in;
 
public
static
final
PrintStream out;
 
public
static
final
PrintStream err;
weiter
Applets
keine Standardeingabe
Standardausgabe mit browser verbunden.

weiter

Eingabe

abstrakte Klasse für Eingabeströme
 
elementare Routinen an C angelehnt:
-1 entspricht EOF
weiter
die wichtigsten Funktionen
public
abstract
int read() throws IOException;
 
public
int
read(byte b[]) throws IOException;
 
public
int read(byte b[]int offint len)
  throws IOException;
 
public
void close() throws IOException;
weiter
merke
sehr einfache Funktionen, sehr wenige Funktionen
merke
kein Einlesen von anderen elementaren Datentypen außer byte
abstrakte Klasse für char Eingabeströme
 
elementare Routinen an C angelehnt:
-1 entspricht EOF
Schnittstelle noch einfacher als bei InputStream
weiter
die wichtigsten Funktionen
public
int read() throws IOException
 
public
int read(char cbuf[]) throws IOException
 
public
abstract                                 // <--
int read(char cbuf[]int offint len)
  throws IOException
 
public
abstract                                 // <--
void close() throws IOException
weiter
merke
nur 2 Routinen sind für einen reader neu zu implementieren

weiter

Filter-Datenströme

Idee
Aufgaben eines E/A Systems in unabhängige Bausteine zerlegen:
 
  • E/A von einfachen Datentypen: int, double, ...
  • Pufferung
  • Zusatzaufgaben: Zeilen zählen, ...
  • zurückschreiben
weiter
merke
in C:
alles in einer Bibliothek
weiter
Filter-Datenströme
besitzen einen Datenstrom als Komponente
besitzen die gleiche Schnittstelle, wie andere Filter auch
sind beliebig untereinander kombinierbar
formatierte E/A, Pufferung, ... werden durch Filter-Datenströme realisiert.
weiter
merke
2 Filterversionen
Eingabefilter
 
für: char
 
Ausgabefilter
 
für: char
 
weiter
Beispiel
class MyFstFilterReader extends FilterReader {
 
  protected
  Reader r;
 
  public
  MyFirstFilterReader(Reader r) { this.r = r}
  ...
}
 
class MySndFilterReader extends FilterReader {
  // analog
  ...
}
 
Reader ir0 = ...
MyFstFilterReader ir1 = MyFstFilterReader(ir0);
MySndFilterReader ir2 = MySndFilterReader(ir1);
 
 ... ir2.read(...) ...
weiter
Beispiel
Zahlenfolgen als streams

weiter

Vererbungshierarchie

und Verwandte
 
java.lang.Object
   |
   +----java.io.InputStream
           |
           +----java.io.FileInputStream
           |
           +----java.io.ByteArrayInputStream
           |
           +----java.io.StringBufferInputStream
           |
           +----java.io.PipedInputStream
           |
           +----java.io.SequenceInputStream
           |
           +----java.io.FilterInputStream
                   |
                   +----java.io.BufferedInputStream
                   |
                   +----java.io.DataInputStream
                   |
                   +----java.io.LineNumberInputStream
                   |
                   +----java.io.PushbackInputStream
weiter

weiter

Vererbungshierarchie

für Reader
und Verwandte
 
java.lang.Object
   |
   +----java.io.Reader
           |
           +----java.io.CharArrayReader
           |
           +----java.io.StringReader
           |
           +----java.io.BufferedReader
           |       |
           |       +----java.io.LineNumberReader
           |
           +----java.io.InputStreamReader
           |       |
           |       +----java.io.FileReader
           |
           +----java.io.PipedReader
           |
           +----java.io.FilterReader
                   |
                   +----java.io.PushbackReader
 
für OutputStream und Writer gibt es ähnliche Vererbungshierachien

Letzte Änderung: 14.02.2012
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel