Ausgabe Streams - BFH-TI Staff

Werbung
Berner Fachhochschule
Hochschule für Technik und Informatik HTI
Ein- Ausgabe
Streams
Unterlagen zum Modul "OOP mit Java"
V 3.0
© 2011 by WBR1&MOU2/BFH-TI
Ein- Ausgabe, Streams
WBR1&MOU2/BFH-TI
V3.0 © 2011 by
Berner Fachhochschule
Hochschule für Technik und Informatik HTI
Streams
Definition:
Ein Stream ist eine zeitliche Sequenz von endlich vielen
Ein- oder Ausgabedaten.
Streams in Java:
Alle Quellen und Senken von Daten (Files, Tastatur,
Monitor, Modem, URL...) werden in Java durch so
genannte Streams dargestellt.
Ein- Ausgabe, Streams
V3.0 © 2011 by WBR1&MOU2/BFH-TI
Folie 7-4
Berner Fachhochschule
Hochschule für Technik und Informatik HTI
Anwenden von Streams
Drei Phasen beim Nutzen von Streams:
1.
2.
3.
Anmelden, initialisieren, verbinden
Nutzen, lesen, schreiben
Abmelden, freigeben
Ein- Ausgabe, Streams
V3.0 © 2011 by WBR1&MOU2/BFH-TI
Folie 7-5
Berner Fachhochschule
Hochschule für Technik und Informatik HTI
Basisklassen für Streams
•
•
Streams werden durch Java-Objekte dargestellt.
Es sind sehr unterschiedliche Ströme denkbar,
entsprechend viele Klassen gibt es. Alle diese
Klassen lassen sich in folgenden 4 abstrakten
Basisklassen einteilen:
Bytes (0..255)
Zeichen (Unicode)
Lesen
InputStream
Reader
Schreiben
OutputStream
Writer
Ein- Ausgabe, Streams
V3.0 © 2011 by WBR1&MOU2/BFH-TI
Folie 7-6
Berner Fachhochschule
Hochschule für Technik und Informatik HTI
Übersicht Input-Streams
Byte-Streams
Bytes
Stream: Bytes
P
r
o
g
r
a
m
m
Character-Streams
Reader: char
InputStream
Binäre-Streams
DataInput: Daten
Internet
Daten
Daten-Quellen
Ein- Ausgabe, Streams
V3.0 © 2011 by WBR1&MOU2/BFH-TI
Folie 7-7
Berner Fachhochschule
Hochschule für Technik und Informatik HTI
Die Basisklasse InputStream
•
•
•
Ist eine abstrakte Klasse
Abstraktion für alle konkret möglichen Byte-orientierten
Eingangsströme.
Vorteile der Abstraktion:
Einheitlicher Code zum transferieren von Daten
Ein- Ausgabe, Streams
V3.0 © 2011 by WBR1&MOU2/BFH-TI
Folie 7-8
Berner Fachhochschule
Hochschule für Technik und Informatik HTI
Klassenhierarchie für die InputStreams
3 Arten von InputStream Klassen:
1. Ebene: Die abstrakte Klasse InputStream
2. Ebene: Echte Quellen eines Byte-Streams
3. Ebene: Filter-InputStreams, diese definieren
zusätzliche Funktionalität für die Eingabe. Ein
InputStream kann mit beliebigen Filter-Funktionen
angereichert werden.
Ein- Ausgabe, Streams
V3.0 © 2011 by WBR1&MOU2/BFH-TI
Folie 7-9
Berner Fachhochschule
Hochschule für Technik und Informatik HTI
Klassenhierarchie für die InputStreams(2)
Ein- Ausgabe, Streams
V3.0 © 2011 by WBR1&MOU2/BFH-TI
Folie 7-10
Berner Fachhochschule
Hochschule für Technik und Informatik HTI
Methoden von InputStream
•
•
•
void close();
int read();
int read(byte[] cbuf,
int
off,
int
len);
Ein- Ausgabe, Streams
V3.0 © 2011 by WBR1&MOU2/BFH-TI
Folie 7-11
Berner Fachhochschule
Hochschule für Technik und Informatik HTI
Die Basisklasse Reader
•
•
Ist eine abstrakte Klasse
Abstraktion für alle konkret möglichen Charakterorientierten Eingangsströme.
schlagen eine Brücke zwischen der Byte-orientierten
(8-Bit) und der Unicode-orientierten (16-Bit) Welt .
•
–
–
–
–
FileReader übersetzt die Bytes in einem File in einen Charakter
Stream
InputStreamReader holt Charakters von einem Byte Stream
StringReader liefert die Charakter eines Strings
CharArrayReader liefert die Charakter eines Strings
Ein- Ausgabe, Streams
V3.0 © 2011 by WBR1&MOU2/BFH-TI
Folie 7-12
Berner Fachhochschule
Hochschule für Technik und Informatik HTI
Erzeugen eines Readers,
Variante 1
/* Byte-basiert (8-Bit) */
FileInputStream fis = new FileInputStream(„filename.txt“);
/* Charakter-basiert (16-Bit) */
InputStreamReader isr = new InputStreamReader(fis);
/* zur Beschleunigung der Methoden (z.B. Lesen) */
BufferedReader br = new BufferedReader(isr);
int chr = br.read();
Ein- Ausgabe, Streams
V3.0 © 2011 by WBR1&MOU2/BFH-TI
Folie 7-13
Berner Fachhochschule
Hochschule für Technik und Informatik HTI
Erzeugen eines Readers,
Variante 2
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream(„name“));
Diese Variante ist weniger übersichtlich aber weit
verbreitet.
Ein- Ausgabe, Streams
V3.0 © 2011 by WBR1&MOU2/BFH-TI
Folie 7-14
Berner Fachhochschule
Hochschule für Technik und Informatik HTI
Standard Ein- und Ausgabe (Vordefinierte Streams)
Standard-Eingaberichtung:
•
In Windows und UNIX: stdin
•
Zugriff aus Java mit System.in
Standard-Ausgaberichtung:
•
In Windows und UNIX: stdout
•
Zugriff aus Java mit System.out
Error-Ausgaberichtung:
•
In Windows und UNIX: stderr
•
Zugriff aus Java mit System.err
Ein- Ausgabe, Streams
Bsp:SystemIn.java
System.out.println("text bla bla")
Skript S.60
V3.0 © 2011 by WBR1&MOU2/BFH-TI
Folie 7-15
Berner Fachhochschule
Hochschule für Technik und Informatik HTI
Ausgabe
•
•
•
Byte-orientierte Streams: OutputStreams
Charakter-orientierte Streams: Writer
Methoden:
void close();
void write();
void flush();
Ein- Ausgabe, Streams
V3.0 © 2011 by WBR1&MOU2/BFH-TI
Folie 7-16
Berner Fachhochschule
Hochschule für Technik und Informatik HTI
Binäre Streams
•
•
•
•
Eingabe: DataInputStream
Ausgabe: DataOutputStream
Filter für binäre Daten im „Internet-Format“
Methoden wie readBoolean(), readShort(), writeFloat()
usw.
Beispiel:
FileInputStream fIn = new FileInputStream(“C://bsp.txt“);
DataInputStream dIn = new DataInputStream(fin);
double d = dIn.readDouble();
Ein- Ausgabe, Streams
V3.0 © 2011 by WBR1&MOU2/BFH-TI
Folie 7-17
Berner Fachhochschule
Hochschule für Technik und Informatik HTI
Zusammenfassung
•
•
•
•
•
Alle Ein- und Ausgaben (I/O) werden in Java mit
Streams verarbeitet
Es gibt 2 Arten von Streams: 8-Bit und 16-Bit
8-Bit: InputStreams resp. OutputStreams
16-Bit: Reader und Writer
Jeder Streamtyp bietet einen bestimmten Dienst an,
z.B. Character I/O, Byte I/O, I/O zu einem Bytearray
Streams können miteinander verbunden werden,
indem ein Stream dem andern Stream als
Konstruktorargument übergeben wird
Ein- Ausgabe, Streams
V3.0 © 2011 by WBR1&MOU2/BFH-TI
Folie 7-18
Herunterladen