10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.

Slides:



Advertisements
Ähnliche Präsentationen
Objektorientierte Programmierung
Advertisements

Strukturen in C Spelz, Sievers, Bethke.
Präsentation PS: Klasse File von Janko Lange, Thomas Lung, Dennis Förster, Martin Hiller, Björn Schöbel.
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Konzepte objektorientierter Systeme
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 Strings (Zeichenketten)
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Abstrakte Klassen.
Dateien. Eine Datei wird in C++ als ein Stream, also als ein Objekt einer bestimmten Klasse dargestellt.
Konstruktoren.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Java-AG Ausnahmebehandlung Gerhard Gröger.
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Zusammenfassung Vorwoche
Packages Vortrag : Cornelia Hardt 23. November 1999.
DVG Dateien. DVG Die Klasse File Die Klasse File stellt die Verbindung zwischen dem File-System des Rechners und dem JAVA-Programm her.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Datenströme DVG Datenströme.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Informatik 2 Typinformationen und Ein- und Ausgabe
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Copyright 2007 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2007/08 Kapitel 10, Folie 1 2 Dr. Christian Herzog Technische.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Grundlagen der Informatik 1 Thema 20: Ströme und Ein-/Ausgabe in Java
Java für Fortgeschrittene
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester Prof. Bernd Brügge, Ph.D Institut für Informatik Technische Universität.
EPROG Tutorium #6 Philipp Effenberger
Programmieren in C Dateien
Programmiervorkurs WS 2014/15 Methoden
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Java-AG Datenstreams: Dateibehandlung, Lesen aus und schreiben in eine Datei.
Java-Kurs Übung Besprechung der Hausaufgabe
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 12. Vorlesung WS 2001/2002.
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ Ausnahmen (Exceptions)
Abstrakte Klassen und das Interface-Konzept
Ein- und Ausgabe in Java Packet: java.io
OOP mit Java Oder: Java in 5 Tagen. 1. Tag Klassen und Methoden Hello World in Variationen Von Menschen und Geschlechtern Horden (Schlange stehen)
Tutorium Software-Engineering SS14 Florian Manghofer.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Ein- und Ausgabe in der Programmiersprache Java.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Java I/O Input / Output stream Library
Java I/O Input / Output stream Library
Programmieren in C Dateien
Konstruktoren.
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
1. Die rekursive Datenstruktur Liste 1
Implementieren von Klassen
 Präsentation transkript:

10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java

10 Streams JavaHS Merseburg WS 05/06 Java bietet eine umfangreiche Bibliothek zum sequentiellen Zugriff auf Dateien, für wahlfreie Dateioperationen und zur Verwaltung von Verzeichnissen. Alle Klassen zur (Datei-)Ein- und Ausgabe befinden sich im Paket java.io import java.io.*; Sequentieller Zugriff auf Dateien erfolgt über das Konzept der Streams. Streams:... abstraktes Konstrukt, dessen Fähigkeit darin besteht, Zeichen auf ein imaginäres Ausgabegerät zu schreiben oder von diesem zu lesen. Erst konkrete Unterklassen binden die Zugriffsroutinen an echte Ein- und Ausgabegeräte (Dateien, Strings oder Netzwerk- Kommunikationskanäle).

10 Streams JavaHS Merseburg WS 05/06 Eingabestream Ausgabestream

10 Streams JavaHS Merseburg WS 05/06 Streams können verkettet und verschachtelt werden. Verkettung: Dateien werden zusammengefasst und für den Aufrufer als ein einziger Stream dargestellt. Verschachtelung:... erlaubt die Konstruktion von Filtern, die bei der E/A bestimmte Zusatzfunktionen (Puffern von Zeichen, Zählen von Zeilen, Interpretation binärer Daten) übernehmen Beide Konzepte sind mit normalen Sprachmitteln realisiert und können selbst erweitert werden (eigene Filter zur Analyse des Eingabestroms).

10 Streams JavaHS Merseburg WS 05/06 LesenSchreiben Öffnen des Stream while (mehr Daten) read (Daten) Schließen des Stream Öffnen des Streams while (mehr Daten) write (Daten) Schließen des Stream

10 Streams JavaHS Merseburg WS 05/06 Character Streams ReaderReader und Writer sind die abstrakten Superklassen für Character Streams.Writer Reader bieten ein API und eine teilweise Implementation für das Lesen von 16-bit character Werten. Writer bieten entsprechend ein API für das Schreiben von 16-bit character Werten. Die Unterklassen von Reader und Writer implementieren spezialisierte Streams und können in zwei Kategorien unterteilt werden: Klassen die von/in Datenquellen lesen/schreiben (grau) Klassen die (Stream-) Daten verarbeiten (weiss).

10 Streams JavaHS Merseburg WS 05/06

10 Streams JavaHS Merseburg WS 05/06

10 Streams JavaHS Merseburg WS 05/06 Byte Streams InputStream und OutputStream sind die abstrakten Superklassen für Byte Streams. InputStream und OutputStream bieten ein API und eine partielle Implementation für Streams die 8-bit Werte (Bytes) lesen und schreiben. Diese Streams werden insbesondere für das Lesen und Schreiben von Binärdateien verwendet. Zwei dieser Bytestreamklassen, ObjectInputStream und ObjectOutputStream, werden für die Objekt-Serialisierung verwendet. Wie bei den Reader und Writer Klassen, bieten auch die Unterklassen von InputStream und OutputStream spezielle I/O Klassen an:

10 Streams JavaHS Merseburg WS 05/06

10 Streams JavaHS Merseburg WS 05/06 public abstract class java.io.InputStream { public InputStream();// Konstruktor public int available(); // liefert Anzahl der Zeichen, die noch gelesen werden kann public void close(); // schließt den Eingabestrom public void mark(int readlimit); // markiert eine Position im Eingabestrom (vorher prüfen, // sonst Ausnahme) public boolean marksupported(); // Prüfen, ob Markieren unterstützt wird public abstract int read(); // liest das nächste Byte aus dem Eingabestrom und liefert // es als int (-1 = Ende des Eingabestroms) public int read(byte b[]); public int read(byte b[], int off, int len);// überträgt eine Reihe von Zeichen in das als P // übergebene Array und liefert Anzahl der gelesenen Zeichen als Rückgabewert public void reset();// Setzt Lesezeiger an markierte Stelle zurück public void skip(long n); // überspringt n Zeichen im Eingabestrom

10 Streams JavaHS Merseburg WS 05/06 Wahl des Eingabegerätes... bestimmt die Art des Datenlieferanten abgeleitete Klassen: FileInputStreamEingabe aus Datei StringBufferInputStreamEingabe aus einem String SequenceInputStreamVerkettung von Eingabe Streams PipedInputStreamEingabe aus Netzwerk-Pipe FilterInputStreamFilterung von Eingabe Streams

10 Streams JavaHS Merseburg WS 05/06 FileInputStream... lesen aus einer Datei Konstruktoren public FileInputStream(String name) throws FileNotFoundException; // öffnet Datei name zum Lesen public FileInputStream(FileDescriptor fdObj) throws FileNotFoundException; // spezifiziert eine bereits geöffnete Datei public FileInputStream(File file) throws FileNotFoundException;

10 Streams JavaHS Merseburg WS 05/06 public abstract class java.io.OutputStream { public OutputStream(); // Konstruktor public void close(); public void flush(); public abstract void write(int b); public void write(byte b[]); public void write(byte b[], int off, int len);}

10 Streams JavaHS Merseburg WS 05/06 Die Wahl des Ausgabegerätes Als abstrakte Klasse kann OutputStream/InputStream nicht instanziert werden, daher wurden verschiedene konkrete Klassen abgeleitet, deren Aufgabe es ist, die Verbindung zu einem konkreten Ausgabegerät herzustellen: FileOutputStream Ausgabe in eine Datei ByteArrayOutputStream Ausgabe in ein dynamisches Array von Byte PipedOutputStream Ausgabe in eine Netzwerk-Pipe FilterOutputStream Filterung von Ausgabe-Streams FileOutputStream... ermöglicht schreibenden Zugriff auf sequentielle Dateien und implementiert die abstrakten Eigenschaften von OutputStream.

10 Streams JavaHS Merseburg WS 05/06 zusätzliche Konstruktoren: public FileOutputStream(String name) throws IOException; // Öffnen (Inhalt löschen) bzw. Anlegen einer Datei durch Übergabe des Dateinamens public FileOutputStream(FileDescriptor fdObj) throws IOException; // Öffnen (Inhalt löschen) bzw. Anlegen einer Datei durch Übergabe des Dateidescriptors public FileOutputStream(File file) throws IOException; // File-Objekt: Repräsentation einer Datei im Kontext ihres Verzeichnisses Alle Methoden der Klasse deklarieren als Ausnahme IOException als allgemeine Fehleranzeige Konstruktor:Datei kann nicht angelegt werden write:Schreibfehler close:nicht näher spezifizierter I/O-Fehler Differenziertere Fehlerbehandlung ist möglich.

10 Streams JavaHS Merseburg WS 05/06 Reader und InputStream definieren ähnliche APIs für unterschiedliche Datentypen. Beispiel: Reader- Methoden zum lesen von Zeichen und Z.-Arrays int read() int read(char cbuf[]) int read(char cbuf[], int offset, int length) InputStream Methoden zum Lesen von Bytes int read() int read(byte cbuf[]) int read(byte cbuf[], int offset, int length) Writer und OutputStream verhalten sich ähnlich int write(char c),int write(char cbuf[]) int write(char cbuf[],int offset, int length) int write(int c)int write(byte cbuf[]) int write(byte cbuf[], int offset, int length)