Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien. Programmieren I. Martin Schultheiß

Größe: px
Ab Seite anzeigen:

Download "Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien. Programmieren I. Martin Schultheiß"

Transkript

1 Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011

2 1 Dateien: Allgemeines 2 Dateien lesen 3 Beispiel: CSV-Daten 4 Filter 5 Ausgabe in Dateien

3 Dateien: Allgemeines Kaum eine Anwendung im echten Leben kommt ohne Dateien aus, sei es zum Lesen oder Schreiben (oder beides).

4 Dateien: Allgemeines Kaum eine Anwendung im echten Leben kommt ohne Dateien aus, sei es zum Lesen oder Schreiben (oder beides). Hierbei wird im Wesentlichen zwischen zwei Typen von Dateien unterschieden:

5 Dateien: Allgemeines Kaum eine Anwendung im echten Leben kommt ohne Dateien aus, sei es zum Lesen oder Schreiben (oder beides). Hierbei wird im Wesentlichen zwischen zwei Typen von Dateien unterschieden: Textdateien enthalten lesbaren Text. Diese kann man in einem normalen Editor (notepad, emacs,... ) öffnen, lesen und bearbeiten.

6 Dateien: Allgemeines Kaum eine Anwendung im echten Leben kommt ohne Dateien aus, sei es zum Lesen oder Schreiben (oder beides). Hierbei wird im Wesentlichen zwischen zwei Typen von Dateien unterschieden: Textdateien enthalten lesbaren Text. Diese kann man in einem normalen Editor (notepad, emacs,... ) öffnen, lesen und bearbeiten. Binärdateien enthalten Daten in binärer Form, die nicht zum direkten Lesen durch den Menschen gedacht sind (und zum Teil auch nicht druckbare Zeichen enthalten), sondern zur Verarbeitung durch ein Programm gedacht sind. Beispiele hierfür sind Word-, Excel-Dateien, Grafiken (z. B. GIF, JPG), Musik (z. B. MP3).

7 Was ist eine Datei? In erster Linie ist eine Datei eine Menge von Bytes bzw. Zeichen auf einem Speichermedium, in die man Bytes bzw. Zeichen sequenziell schreiben oder daraus lesen kann.

8 Was ist eine Datei? In erster Linie ist eine Datei eine Menge von Bytes bzw. Zeichen auf einem Speichermedium, in die man Bytes bzw. Zeichen sequenziell schreiben oder daraus lesen kann. Zweitens sind mit einer Datei (je nach Fähigkeiten des Betriebssystems) Eigenschaften wie Dateiname, Zugriffsrechte (teilweise je nach User unterschiedlich) oder Zugriffs-, Modifikationsdatum verbunden.

9 Was ist eine Datei? In erster Linie ist eine Datei eine Menge von Bytes bzw. Zeichen auf einem Speichermedium, in die man Bytes bzw. Zeichen sequenziell schreiben oder daraus lesen kann. Zweitens sind mit einer Datei (je nach Fähigkeiten des Betriebssystems) Eigenschaften wie Dateiname, Zugriffsrechte (teilweise je nach User unterschiedlich) oder Zugriffs-, Modifikationsdatum verbunden. In dieser Vorlesung geht es um den ersten Punkt, also das Schreiben und Lesen von Daten.

10 Eingabeströme Java stellt zwei einfache, abstrakte Klassen für Eingabeströme zur Verfügung:

11 Eingabeströme Java stellt zwei einfache, abstrakte Klassen für Eingabeströme zur Verfügung: InputStream stellt rudimentäre Funktionalität zum Lesen von Bytes zur Verfügung.

12 Eingabeströme Java stellt zwei einfache, abstrakte Klassen für Eingabeströme zur Verfügung: InputStream stellt rudimentäre Funktionalität zum Lesen von Bytes zur Verfügung. Reader stellt rudimentäre Funktionalität zum Lesen von Zeichen zur Verfügung.

13 Eingabeströme Java stellt zwei einfache, abstrakte Klassen für Eingabeströme zur Verfügung: InputStream stellt rudimentäre Funktionalität zum Lesen von Bytes zur Verfügung. Reader stellt rudimentäre Funktionalität zum Lesen von Zeichen zur Verfügung.

14 Eingabeströme Java stellt zwei einfache, abstrakte Klassen für Eingabeströme zur Verfügung: InputStream stellt rudimentäre Funktionalität zum Lesen von Bytes zur Verfügung. Reader stellt rudimentäre Funktionalität zum Lesen von Zeichen zur Verfügung. (NB: Dass Lesen von Bytes und Zeichen ein Unterschied ist, liegt daran, dass es in Zeiten von Unicode Zeichen aus mehr als einem Byte bestehen können multi byte characters)

15 Eingabeströme Java stellt zwei einfache, abstrakte Klassen für Eingabeströme zur Verfügung: InputStream stellt rudimentäre Funktionalität zum Lesen von Bytes zur Verfügung. Reader stellt rudimentäre Funktionalität zum Lesen von Zeichen zur Verfügung. (NB: Dass Lesen von Bytes und Zeichen ein Unterschied ist, liegt daran, dass es in Zeiten von Unicode Zeichen aus mehr als einem Byte bestehen können multi byte characters) Diese Sicht auf einen Datenstrom zur Eingabe ist allgemein und nicht nur auf Dateien bezogen. Genauso könnte sich also ein InputStream auf einen String oder eine Socket-Verbindung im Netzwerk beziehen.

16 Methoden von Reader close() Schließen der Datei, implementiert die abstrakte Methode aus dem Interface Closeable.

17 Methoden von Reader close() Schließen der Datei, implementiert die abstrakte Methode aus dem Interface Closeable. read(char cbuf[], int offset, int length) liest in einen Character-Array cbuf ab dem Offset oset eine Menge von length Zeichen. Das Lesen ist blockierend, d. h., wenn weniger Zeichen im Eingabestrom zur Verfügung stehen, wird gewartet (es sei denn, es tritt EOF end of file auf). Rückgabewert: Zahl der gelesenen Zeichen, oder 1 nach EOF Diese Methode ist abstrakt und muss in eigenen Reader-Klassen implementiert werden!

18 Methoden von Reader close() Schließen der Datei, implementiert die abstrakte Methode aus dem Interface Closeable. read(char cbuf[], int offset, int length) liest in einen Character-Array cbuf ab dem Offset oset eine Menge von length Zeichen. Das Lesen ist blockierend, d. h., wenn weniger Zeichen im Eingabestrom zur Verfügung stehen, wird gewartet (es sei denn, es tritt EOF end of file auf). Rückgabewert: Zahl der gelesenen Zeichen, oder 1 nach EOF Diese Methode ist abstrakt und muss in eigenen Reader-Klassen implementiert werden! read(char cbuf[]) Äquivalent zu read(cbuf,0,cbuf.length).

19 Methoden von Reader close() Schließen der Datei, implementiert die abstrakte Methode aus dem Interface Closeable. read(char cbuf[], int offset, int length) liest in einen Character-Array cbuf ab dem Offset oset eine Menge von length Zeichen. Das Lesen ist blockierend, d. h., wenn weniger Zeichen im Eingabestrom zur Verfügung stehen, wird gewartet (es sei denn, es tritt EOF end of file auf). Rückgabewert: Zahl der gelesenen Zeichen, oder 1 nach EOF Diese Methode ist abstrakt und muss in eigenen Reader-Klassen implementiert werden! read(char cbuf[]) Äquivalent zu read(cbuf,0,cbuf.length). read() liest ein Zeichen ein, wobei dieses als int zurückgegeben wird, bzw. 1, falls das Dateiende erreicht wurde.

20 Weitere Readerklassen Die Klasse Reader als abstrakte Klasse stellt die allgemeine Grundfunktionalität zur Verfügung.

21 Weitere Readerklassen Die Klasse Reader als abstrakte Klasse stellt die allgemeine Grundfunktionalität zur Verfügung. Konkrete Implementierungen von Reader sind z. B.: InputStreamReader Dieser Reader macht aus einem Byte-Stream InputStream, der dem Konstruktor übergeben wird, einen Character-Stream. Beispiel: new InputStreamReader(System.in)

22 Weitere Readerklassen Die Klasse Reader als abstrakte Klasse stellt die allgemeine Grundfunktionalität zur Verfügung. Konkrete Implementierungen von Reader sind z. B.: InputStreamReader Dieser Reader macht aus einem Byte-Stream InputStream, der dem Konstruktor übergeben wird, einen Character-Stream. Beispiel: new InputStreamReader(System.in) FileReader Dieser Reader liest aus einer Datei auf einem Speichermedium (z. B. Festplatte): new FileReader("daten.txt")

23 Weitere Readerklassen (Forts.) Im Prinzip reicht die Klasse FileReader völlig aus, um aus einer Datei lesen zu können... es ist nur sehr unbequem, dies zeichenweise tun zu müssen.

24 Weitere Readerklassen (Forts.) Im Prinzip reicht die Klasse FileReader völlig aus, um aus einer Datei lesen zu können... es ist nur sehr unbequem, dies zeichenweise tun zu müssen. Beim Lesen von Text-Dateien will man meist zeilenweise lesen. Dies kann mit mit der Klasse BueredReader geleistet werden. BueredReader ist ein High-Level-Reader, der einen anderen Reader um die Möglichkeit bereichern kann, eine Zeile als String einzulesen. Hierfür dient dann die Methode String readline().

25 Beispiel: Eingabe von der Tastatur import java. i o. * ; p u b l i c c l a s s App { p u b l i c s t a t i c void main ( S t r i n g [ ] args ) { BufferedReader in = new BufferedReader ( new InputStreamReader ( System. in ) ) ; } } try { S t r i n g z e i l e = in. readline ( ) ; } catch ( IOException e ) { e. printstacktrace ( ) ; }

26 Analyse Am vorigen Beispiel wird das Konzept der Stream- und Reader-Klassen in Java mit einer Trennung in Low-Level- und High-Level-Klassen deutlich:

27 Analyse Am vorigen Beispiel wird das Konzept der Stream- und Reader-Klassen in Java mit einer Trennung in Low-Level- und High-Level-Klassen deutlich: System.in ist ein allgemeiner InputStream, aus dem Bytes gelesen werden können,

28 Analyse Am vorigen Beispiel wird das Konzept der Stream- und Reader-Klassen in Java mit einer Trennung in Low-Level- und High-Level-Klassen deutlich: System.in ist ein allgemeiner InputStream, aus dem Bytes gelesen werden können, InputStreamReader macht aus diesem Stream einen Low-Level-Reader, aus dem eine Menge von Zeichen gelesen werden kann,

29 Analyse Am vorigen Beispiel wird das Konzept der Stream- und Reader-Klassen in Java mit einer Trennung in Low-Level- und High-Level-Klassen deutlich: System.in ist ein allgemeiner InputStream, aus dem Bytes gelesen werden können, InputStreamReader macht aus diesem Stream einen Low-Level-Reader, aus dem eine Menge von Zeichen gelesen werden kann, BueredReader dekoriert diesen Low-Level-Reader mit einem High-Level-Reader, der dann zeilenweises Einlesen erlaubt.

30 Analyse Am vorigen Beispiel wird das Konzept der Stream- und Reader-Klassen in Java mit einer Trennung in Low-Level- und High-Level-Klassen deutlich: System.in ist ein allgemeiner InputStream, aus dem Bytes gelesen werden können, InputStreamReader macht aus diesem Stream einen Low-Level-Reader, aus dem eine Menge von Zeichen gelesen werden kann, BueredReader dekoriert diesen Low-Level-Reader mit einem High-Level-Reader, der dann zeilenweises Einlesen erlaubt.

31 Analyse Am vorigen Beispiel wird das Konzept der Stream- und Reader-Klassen in Java mit einer Trennung in Low-Level- und High-Level-Klassen deutlich: System.in ist ein allgemeiner InputStream, aus dem Bytes gelesen werden können, InputStreamReader macht aus diesem Stream einen Low-Level-Reader, aus dem eine Menge von Zeichen gelesen werden kann, BueredReader dekoriert diesen Low-Level-Reader mit einem High-Level-Reader, der dann zeilenweises Einlesen erlaubt. Hierdurch wird eine Trennung zwischen Datenquelle und der Art des Lesens erreicht. Die Physik (Lesen von der Platte, von einem Socket,... ) steckt im Low-Level-Reader, der Komfort dann im High-Level-Reader.

32 Beispiel: Eingabe aus einer Datei Das Lesen aus einer Datei ist nun fast identisch (außer, dass man die FileNotFoundException abfangen muss): import java. i o. * ; p u b l i c c l a s s App { p u b l i c s t a t i c void main ( S t r i n g [ ] args ) { BufferedReader i n ; try { i n = new BufferedReader ( new FileReader ( " daten. txt " ) ) ; S t r i n g z e i l e = in. readline ( ) ; System. out. p r i n t l n ( z e i l e ) ; } catch ( FileNotFoundException e ) { e. printstacktrace ( ) ; } catch ( IOException e ) { e. printstacktrace ( ) ; } } }

33 Beispiel: Lesen von CSV-Daten Für ein komplexeres Beispiel zum Lesen aus Dateien betrachten wir eine Klasse Adresse, die als Attribute Vor- und Nachname, Straße, PLZ und Ort besitzt: p u b l i c c l a s s Adresse { p r i v a t e S t r i n g vorname ; p r i v a t e S t r i n g nachname ; p r i v a t e S t r i n g s t r a s s e ; p r i v a t e S t r i n g p l z ; p r i v a t e S t r i n g o r t ; p u b l i c Adresse ( S t r i n g vorname, S t r i n g nachname, S t r i n g s t r a s s e, S t r i n g plz, S t r i n g o r t ) { t h i s. vorname = vorname ; t h i s. nachname = nachname ; t h i s. s t r a s s e = s t r a s s e ; t h i s. p l z = p l z ; t h i s. o r t = o r t ; }

34 Beispiel: Lesen von CSV-Daten (Forts.) } p u b l i c S t r i n g getnachname ( ) { return nachname ; } p u b l i c S t r i n g getort ( ) { return o r t ; } p u b l i c S t r i n g getplz ( ) { return p l z ; } p u b l i c S t r i n g g e t S t r a s s e ( ) { return s t r a s s e ; } p u b l i c S t r i n g getvorname ( ) { return vorname ; }

35 Problemstellung Tabellen-artige Daten wie Adressen werden häufig in Form von comma separated values (CSV) in Text-Dateien gespeichert. Die können dann z. B. einfach von einer Tabellenkalkulation wie Excel verarbeitet werden.

36 Problemstellung Tabellen-artige Daten wie Adressen werden häufig in Form von comma separated values (CSV) in Text-Dateien gespeichert. Die können dann z. B. einfach von einer Tabellenkalkulation wie Excel verarbeitet werden. Beispiel für eine CSV-Datei: Karl;Mueller;Rosenstr. 7;12345;Rosendorf Erich;Mustermann;Musterweg 1;90000;Bad Homburg Angelika;Schmidt;Annastr. 23;22457;Hamburg Thomas;von Sokolowski;Rheinstr. 5;64283;Darmstadt Typisch ist, dass die Felder durch ein Zeichen separiert werden, das im Feldinhalt typischer Weise nicht vorkommt (z. B ; oder ).

37 Problemstellung (Forts.) Zum Einlesen von Adressdaten im CSV-Format soll der Klasse Adresse nun eine neue statische Methode Adresse[] parse(string dateiname) hinzu gefügt werden.

38 Problemstellung (Forts.) Zum Einlesen von Adressdaten im CSV-Format soll der Klasse Adresse nun eine neue statische Methode Adresse[] parse(string dateiname) hinzu gefügt werden. Diese Methode muss also:

39 Problemstellung (Forts.) Zum Einlesen von Adressdaten im CSV-Format soll der Klasse Adresse nun eine neue statische Methode Adresse[] parse(string dateiname) hinzu gefügt werden. Diese Methode muss also: eine Datei zum Lesen öffnen und mit einem BueredReader dekorieren,

40 Problemstellung (Forts.) Zum Einlesen von Adressdaten im CSV-Format soll der Klasse Adresse nun eine neue statische Methode Adresse[] parse(string dateiname) hinzu gefügt werden. Diese Methode muss also: eine Datei zum Lesen öffnen und mit einem BueredReader dekorieren, jede Zeile der Datei in einzelne Felder aufsplitten,

41 Problemstellung (Forts.) Zum Einlesen von Adressdaten im CSV-Format soll der Klasse Adresse nun eine neue statische Methode Adresse[] parse(string dateiname) hinzu gefügt werden. Diese Methode muss also: eine Datei zum Lesen öffnen und mit einem BueredReader dekorieren, jede Zeile der Datei in einzelne Felder aufsplitten, den Konstruktor von Adresse mit diesen Daten aufrufen,

42 Problemstellung (Forts.) Zum Einlesen von Adressdaten im CSV-Format soll der Klasse Adresse nun eine neue statische Methode Adresse[] parse(string dateiname) hinzu gefügt werden. Diese Methode muss also: eine Datei zum Lesen öffnen und mit einem BueredReader dekorieren, jede Zeile der Datei in einzelne Felder aufsplitten, den Konstruktor von Adresse mit diesen Daten aufrufen, die Adressen in einen Array packen und zurück geben.

43 Implementierung von parse p u b l i c s t a t i c Adresse [ ] parse ( S t r i n g dateiname ) { ArrayList <Adresse> temp = new ArrayList <Adresse >(); try { BufferedReader i n = new BufferedReader ( new FileReader ( dateiname ) ) ; S t r i n g z e i l e ; while ( ( z e i l e=in. readline ( ) )!= n u l l ) { S t r i n g [ ] items = z e i l e. s p l i t ( " ; " ) ; temp. add (new Adresse ( items [ 0 ], items [ 1 ], items [ 2 ], items [ 3 ], items [ 4 ] ) ) ; } } catch ( FileNotFoundException e ) { System. e r r. p r i n t l n ( "Kann Datei "+dateiname+" n i c h t ö f f n } catch ( IOException e ) { System. e r r. p r i n t l n ( " L e s e f e h l e r " ) ; } System. out. p r i n t l n ( temp. s i z e ()+" Adressen e i n g e l e s e n " ) ; return temp. toarray (new Adresse [ 0 ] ) ; }

44 Zwischenfilter Ein weiterer Vorteil des Konzepts mit Low-Level-Streams und diese dekorierenden High-Level-Streams liegt darin, dass man nach Wunsch Zwischen-Filter einbauen kann.

45 Zwischenfilter Ein weiterer Vorteil des Konzepts mit Low-Level-Streams und diese dekorierenden High-Level-Streams liegt darin, dass man nach Wunsch Zwischen-Filter einbauen kann. Diese können transparent Ein- und Ausgabeströme manipulieren. Beispielsweise könnte man so erreichen, dass Daten beim Schreiben verschlüsselt und beim Lesen entschlüsselt werden, ohne dass die Anwendung dies merkt, weil dieser Prozess als Filter zwischen Low- und High-Level-Stream bzw. -Reader geschaltet ist.

46 Implementierung eines Filters Als kleines Beispiel soll ein Inputfilter implementiert werden, der alle eingelesenen Zeichen in Großbuchstaben umwandelt.

47 Implementierung eines Filters Als kleines Beispiel soll ein Inputfilter implementiert werden, der alle eingelesenen Zeichen in Großbuchstaben umwandelt. Hierfür wird: eine neue Kindklasse von Reader definiert,

48 Implementierung eines Filters Als kleines Beispiel soll ein Inputfilter implementiert werden, der alle eingelesenen Zeichen in Großbuchstaben umwandelt. Hierfür wird: eine neue Kindklasse von Reader definiert, diese dekoriert einen anderen Reader, der dem Konstruktor als Referenz übergeben wird,

49 Implementierung eines Filters Als kleines Beispiel soll ein Inputfilter implementiert werden, der alle eingelesenen Zeichen in Großbuchstaben umwandelt. Hierfür wird: eine neue Kindklasse von Reader definiert, diese dekoriert einen anderen Reader, der dem Konstruktor als Referenz übergeben wird, die abstrakten Methoden read(char [], int, int) und close () aus Reader implementiert,

50 Implementierung eines Filters Als kleines Beispiel soll ein Inputfilter implementiert werden, der alle eingelesenen Zeichen in Großbuchstaben umwandelt. Hierfür wird: eine neue Kindklasse von Reader definiert, diese dekoriert einen anderen Reader, der dem Konstruktor als Referenz übergeben wird, die abstrakten Methoden read(char [], int, int) und close () aus Reader implementiert, wobei die Implementierung jeweils auf die entsprechenden Methoden aus dem dekorierten Reader zurück greift,

51 Implementierung eines Filters Als kleines Beispiel soll ein Inputfilter implementiert werden, der alle eingelesenen Zeichen in Großbuchstaben umwandelt. Hierfür wird: eine neue Kindklasse von Reader definiert, diese dekoriert einen anderen Reader, der dem Konstruktor als Referenz übergeben wird, die abstrakten Methoden read(char [], int, int) und close () aus Reader implementiert, wobei die Implementierung jeweils auf die entsprechenden Methoden aus dem dekorierten Reader zurück greift, aber beim read (...) die eingelesenen Zeichen manipulieren kann.

52 Beispiel p u b l i c c l a s s UpperInputReader extends Reader { p r i v a t e Reader in ; p u b l i c UpperInputReader ( Reader in ) { t h i s. in = in ; p u b l i c i n t read ( char [ ] cbuf, i n t o f f s e t, i n t length ) thro i n t count = super. read ( cbuf, o f f s e t, length ) ; f o r ( i n t i=o f f s e t ; i<o f f s e t+count ; i++) { cbuf [ i ] = Character. touppercase ( cbuf [ i ] ) ; } return count ; p u b l i c void c l o s e ( ) throws IOException { super. c l o s e ( ) ; } }

53 Anwendung Mit diesem Filter kann man nun einfach benutzen, um ganz transparent alle von der Tastatur gelesenen Zeichen als Großbuchstaben zu lesen: p u b l i c c l a s s App { p u b l i c s t a t i c void main ( S t r i n g [ ] args ) throws IOException BufferedReader i n = new BufferedReader ( new UpperInputReader ( new InputStreamReader ( System. in ) ) ) ; S t r i n g z e i l e = in. readline ( ) ; } } System. out. p r i n t l n ( z e i l e ) ;

54 Die Klasse FilterReader Zur Vereinfachung des Schreibens von Filtern gibt es die Klasse FilterReader, die einen dem Konstruktor als Referenz übergebenen Reader dekoriert. Hierbei sind alle Methoden von Reader so implementiert, dass sie für den dekorierten Reader ausgeführt werden.

55 Die Klasse FilterReader Zur Vereinfachung des Schreibens von Filtern gibt es die Klasse FilterReader, die einen dem Konstruktor als Referenz übergebenen Reader dekoriert. Hierbei sind alle Methoden von Reader so implementiert, dass sie für den dekorierten Reader ausgeführt werden. Diese Klasse FilterReader ist dazu gedacht, dass eigene Filterklassen von dieser erben und dort einzelne Methoden überladen, um eine Manipulation des Eingabestroms zu erreichen.

56 Neue Version von UpperInputReader p u b l i c c l a s s UpperInputReader extends F i l t e r R e a d e r { p u b l i c UpperInputReader ( Reader in ) { super ( in ) ; } p u b l i c i n t read ( char [ ] cbuf, i n t o f f s e t, i n t length ) throws IOException { i n t count = super. read ( cbuf, o f f s e t, length ) ; f o r ( i n t i=o f f s e t ; i<o f f s e t+count ; i++) { cbuf [ i ] = Character. touppercase ( cbuf [ i ] ) ; } return count ; }

57 Ausgabe in Dateien Allgemeines Das Konzept der Ausgabe in Java ist analog zur Eingabe: Es gibt abstrakte Klassen OutputStream und Writer mit der Grundfunktionalität zum Schreiben von Bytes bzw. Zeichen.

58 Ausgabe in Dateien Allgemeines Das Konzept der Ausgabe in Java ist analog zur Eingabe: Es gibt abstrakte Klassen OutputStream und Writer mit der Grundfunktionalität zum Schreiben von Bytes bzw. Zeichen. Low-Level-Klassen sorgen dafür, dass die abstrakten Methoden implementiert werden. Bei Dateien sind dies FileOutputStream und FileWriter,

59 Ausgabe in Dateien Allgemeines Das Konzept der Ausgabe in Java ist analog zur Eingabe: Es gibt abstrakte Klassen OutputStream und Writer mit der Grundfunktionalität zum Schreiben von Bytes bzw. Zeichen. Low-Level-Klassen sorgen dafür, dass die abstrakten Methoden implementiert werden. Bei Dateien sind dies FileOutputStream und FileWriter, High-Level-Klassen erweitern die Grundfunktionalität,

60 Ausgabe in Dateien Allgemeines Das Konzept der Ausgabe in Java ist analog zur Eingabe: Es gibt abstrakte Klassen OutputStream und Writer mit der Grundfunktionalität zum Schreiben von Bytes bzw. Zeichen. Low-Level-Klassen sorgen dafür, dass die abstrakten Methoden implementiert werden. Bei Dateien sind dies FileOutputStream und FileWriter, High-Level-Klassen erweitern die Grundfunktionalität, OutputStreamWriter dient als Brücke, um aus einem Byte-Ausgabestrom einen Character-Ausgabestrom in Form eines Writers zu machen.

61 (aus: Friedrich Esser, Java 2 Designmuster und Zertifizierungswissen, Galileo Computing) Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien Schaubild: Reader- und Writer-Klassen

62 BueredWriter und PrintWriter Im Allgemeinen wird man einen Writer mit einer der Klassen BueredWriter oder PrintWriter dekorieren.

63 BueredWriter und PrintWriter Im Allgemeinen wird man einen Writer mit einer der Klassen BueredWriter oder PrintWriter dekorieren. Diese bieten insbesondere die Möglichkeit, mit der Methode println (...) zeilenweise Daten auszugeben. PrintWriter ermöglicht zusätzlich mit der Methode format (...) eine formatierte Ausgabe.

64 Beispiel import java. i o. * ; import java. math. * ; p u b l i c c l a s s App { p u b l i c s t a t i c void main ( S t r i n g [ ] args ) { try { PrintWriter out = new PrintWriter ( new F i l e W r i t e r ( " daten. txt " ) ) ; f o r ( double x=0; x<1; x+=.01) { out. format ( "%8.2 f %8.2 f \n", x, Math. s i n ( x ) ) ; } } } out. c l o s e ( ) ; } catch ( IOException e ) { e. printstacktrace ( ) ; }

Programmieren I. Dateien: Allgemeines. Vorlesung 10. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Programmieren I. Dateien: Allgemeines. Vorlesung 10. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011 Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 26 Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien 2 / 26 Dateien: Allgemeines Kaum

Mehr

Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien. Programmieren I. Dr. Klaus Höppner

Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien. Programmieren I. Dr. Klaus Höppner Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 26 Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien 2 / 26 Dateien: Allgemeines Kaum

Mehr

java.io Ziel Ressourcen Page 1 Verstehen der unterschiedlichen I / O Möglichkeiten Anwenden der Java I/ O Klassen Java Tutorial Java API Dokumentation

java.io Ziel Ressourcen Page 1 Verstehen der unterschiedlichen I / O Möglichkeiten Anwenden der Java I/ O Klassen Java Tutorial Java API Dokumentation java.io Ziel Verstehen der unterschiedlichen I / O Möglichkeiten Anwenden der Java I/ O Klassen Ressourcen Java Tutorial Java API Dokumentation Page 1 Java API Prinzip Java IO-API ist für eine allgemeine

Mehr

Handbuch konsultieren!

Handbuch konsultieren! Zeichenketten Klasse String Enthält zahlreiche Methoden z.b.: int length(): Anzahl der Zeichen in Zeichenkette String substring(int start): Unterzeichenkette ab Position start boolean equalsignorecase(string

Mehr

Eingabe und Ausgabe in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien

Eingabe und Ausgabe in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien Eingabe und Ausgabe in Java Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien Eingabe Beispiel1 public class Input1 { public static void main(string[] args) { for (int i = 0; i < args.length;

Mehr

Ausnahmen. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

Ausnahmen. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik Ausnahmen Zentralübung zur Vorlesung http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Inhalte der heutigen Vorlesung: Arten von Fehlern Auslösen von Ausnahmen Vermeiden von Ausnahmen Ausnahmeklassen

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Ströme zur Ein- und Ausgabe Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 44 Ströme zur

Mehr

Javakurs für Fortgeschrittene

Javakurs für Fortgeschrittene Javakurs für Fortgeschrittene Einheit 02: Streams filtern Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Datenströme (Streams) Filtern FilterWriter, - Reader Praxis:

Mehr

Ausnahmen. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Ausnahmen. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung : http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Fehlerarten Bei der Programmierung können viele Arten von Fehlern auftreten: Syntaktische Fehler

Mehr

Info B VL 7: Input/Output

Info B VL 7: Input/Output Info B VL 7: Input/Output Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 7: Input/Output p.174 Exkurs:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 15 Einstieg in die Informatik mit Java Streams Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Ein-Ausgabe 2 Klassenhierarchie (Byteorientiert) 3 Klassenhierarchie

Mehr

Java I/O. Input / Output stream Library Regelt I/O über verschiedene Kanäle. Führt notwendige Umwandlungen/Konvertierungen aus

Java I/O. Input / Output stream Library Regelt I/O über verschiedene Kanäle. Führt notwendige Umwandlungen/Konvertierungen aus Java I/O Input / Output stream Library Regelt I/O über verschiedene Kanäle Filesystem Console Netzwerk Intern Führt notwendige Umwandlungen/Konvertierungen aus 1 Furchtbar viele Klassen BufferedInputStream

Mehr

Ausnahmen. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Ausnahmen. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Fehlerarten Bei der Programmierung können viele Arten von Fehlern auftreten:

Mehr

Streams. V by WBR1&MOU2/BFH-TI. Berner Fachhochschule Hochschule für Technik und Informatik HTI

Streams. V by WBR1&MOU2/BFH-TI. 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 V3.0 2011 by WBR1&MOU2/BFH-TI Definition: Berner Fachhochschule Streams Ein Stream ist eine

Mehr

Abschnitt 18: Beispiel: I/O-Streams

Abschnitt 18: Beispiel: I/O-Streams Abschnitt 18: Beispiel: I/O-Streams 18. Beispiel: I/O-Streams 18.1 Eingabe/Ausgabe 18.2 Dateien 18.3 Streams 18.4 Lesen: Inputstreams, Reader 18.5 Schreiben: Outputstreams, Writer 18.6 I/O Ausnahmen 18

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/2015 1 / 28 Strukturmuster Kompositum Dekorierer Adapter 2 / 28 Einführung: Strukturmuster Zu

Mehr

Arten von Streams. Daten. Bytes (8-Bits) Java Programm. Daten. Java Programm. Characters (16 - Bits)

Arten von Streams. Daten. Bytes (8-Bits) Java Programm. Daten. Java Programm. Characters (16 - Bits) Datenströme Arten von Streams Daten 0 1 1 0 1 0 1 0 Java Programm Bytes (8-Bits) Daten 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 Java Programm Characters (16 - Bits) Byteströme(InputStream/OutputStream) I Java Programm

Mehr

Ein- und Ausgabe in Java

Ein- und Ausgabe in Java Ein- und Ausgabe in Java Das Package java.io enthält eine Sammlung von Klassen, die die Kommunikation mit dem Computer steuern Einlesen und Ausgeben von Dateien Ausgabe auf dem Bildschirm Einlesen von

Mehr

Streams. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Streams. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Streams Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 4.7.07 G. Bohlender (IANM UNI Karlsruhe) Streams 4.7.07 1 / 7 Übersicht 1 Einführung

Mehr

Java Fehlerbehandlung

Java Fehlerbehandlung Java Fehlerbehandlung 1 Fehlerbehandlung In jedem nicht-trivialen Programm kann es während der Laufzeit zu Fehlersituationen kommen. Dabei handelt es sich nicht unbedingt um Programmierfehler: z. B.: Programm

Mehr

Kapitel 12. Programmierkurs. Allgemeine Konzepte Byte-Streams versus Character-Streams

Kapitel 12. Programmierkurs. Allgemeine Konzepte Byte-Streams versus Character-Streams Kapitel 12 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln WS 07/08 Dateiein- und -ausgabe Byte-Streams versus Character-Streams Die abstrakte Klasse Writer FileWriter

Mehr

Ausnahmen. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Ausnahmen. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Fehlerarten Bei der Programmierung

Mehr

Vorlesung Programmieren. Java I/O: Input und Output mit Java. Ein-/Ausgabe von Daten. Java I/O. Heute. Grundlage fast aller Programme

Vorlesung Programmieren. Java I/O: Input und Output mit Java. Ein-/Ausgabe von Daten. Java I/O. Heute. Grundlage fast aller Programme Vorlesung Programmieren Java I/O Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Java I/O: Input und Output mit Java Heute Ein-/Ausgabe

Mehr

Datenströme in Java. Zeichenkonvertierung

Datenströme in Java. Zeichenkonvertierung Datenströme in Java Arten von Strömen Ein- und Ausgabeoperationen sind in Java im Wesentlichen über Datenströme realisiert. Dabei werden zwei Arten von Datenströmen unterschieden; byteorientierte Ströme

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Java I/O Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Java I/O: Input und Output mit Java Heute Ein-/Ausgabe

Mehr

Ausnahmen. Dr. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Ausnahmen. Dr. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Dr. Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-16-17/infoeinf WS16/17 Action required now 1. Smartphone: installiere die App "socrative

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

Ausnahmen. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Ausnahmen. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung https://www.sosy-lab.org/teaching/2017-ws-infoeinf/ WS17/18 Fehlerarten Bei der Programmierung

Mehr

Java Einführung Exception Handling. Kapitel 17

Java Einführung Exception Handling. Kapitel 17 Java Einführung Exception Handling Kapitel 17 Inhalt Was sind Exceptoins? Wie werden sie ausgelöst? Wie kann man Exceptions behandeln? Erweiterung von Exceptions Spezialfall IO 2 Ausnahmezustände Im Ablauf

Mehr

Grundlagen der Programmierung! Kapitel 10: Ein- und Ausgabe! Ziele dieses Kapitels! Datei! Das Problem!

Grundlagen der Programmierung! Kapitel 10: Ein- und Ausgabe! Ziele dieses Kapitels! Datei! Das Problem! Grundlagen der Programmierung Dr. Christian Herzog Technische Universität München Wintersemester 2014/2015 Ziele dieses Kapitels Sie verstehen das Konzept der Ströme Sie können Klassen wie Reader, Writer,

Mehr

Java I Vorlesung Exceptions

Java I Vorlesung Exceptions Java I Vorlesung 8 Exceptions 14.6.2004 Exceptions (Ausnahmen) Klassen für Ein- und Ausgabe Ausnahmen Ausnahmen (Exceptions) sind ein Mechanismus zum kontrollierten Melden und Reagieren auf Fehler. Man

Mehr

Client-Server TCP/IP - Kodierung

Client-Server TCP/IP - Kodierung Client-Server TCP/IP - Kodierung Die Socketklassen Ein Socket (engl. Sockel) ist eine bidirektionale Netzwerk-Kommunikationsschnittstelle, deren Verwaltung das Betriebssystem übernimmt. Die Kombination

Mehr

Programmieren 2 Selbststudium Semesterwoche 6

Programmieren 2 Selbststudium Semesterwoche 6 Programmieren 2 Selbststudium Semesterwoche 6 1. Datenströme (Basis: Handout PRG2_SW6_OOP) 1. Gehen Sie nochmals die Kontrollfragen A durch. A.1. Ein JavaProgramm liest Daten aus einem???strom. InputStream

Mehr

JAVA für Einsteiger. Streams und Dateien. eden market Autor: Norman Lahme

JAVA für Einsteiger. Streams und Dateien. eden market Autor: Norman Lahme JAVA für Einsteiger Streams und Dateien eden market Autor: Norman Lahme 1 Gliederung 1. Einleitung 2. Bildschirmausgabe und Tastatureingabe 3. Laden und Speichern von Tex ten 4. Laden und Speichern von

Mehr

Verteilte Systeme - Java Networking (Sockets) 2 -

Verteilte Systeme - Java Networking (Sockets) 2 - Verteilte Systeme - Java Networking (Sockets) 2 - Prof. Dr. Michael Cebulla 06. November 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 30 Michael Cebulla Verteilte Systeme Gliederung Wiederholung:

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 27. Januar 2016 Lesen und Schreiben von Zeichen Reader read(); close();

Mehr

Programmieren 2 09 File-IO

Programmieren 2 09 File-IO Programmieren 2 09 File-IO Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 Eingabe und Ausgabe in Java Daten im Programm während der Ausführungszeit:

Mehr

Java I/O. Input / Output stream Library Regelt I/O über verschiedene Kanäle. Führt notwendige Umwandlungen/Konvertierungen aus

Java I/O. Input / Output stream Library Regelt I/O über verschiedene Kanäle. Führt notwendige Umwandlungen/Konvertierungen aus Java I/O Input / Output stream Library Regelt I/O über verschiedene Kanäle Filesystem Console Netzwerk Intern Führt notwendige Umwandlungen/Konvertierungen aus 1 Furchtbar viele Klassen BufferedInputStream

Mehr

Ausnahmen und IO. Fehler, Ausnahmen, Java- Exception, throw, catch, Ströme, Puffer, Dateien lesen, schreiben, Tastatur, Terminal, HTTP

Ausnahmen und IO. Fehler, Ausnahmen, Java- Exception, throw, catch, Ströme, Puffer, Dateien lesen, schreiben, Tastatur, Terminal, HTTP Ausnahmen und IO Fehler, Ausnahmen, Java- Exception, throw, catch, Ströme, Puffer, Dateien lesen, schreiben, Tastatur, Terminal, HTTP Fehler - Ausnahmen Fehler Fehler :: Unreparierbares Unreparierbares

Mehr

high level I/O/ low level I/O

high level I/O/ low level I/O Dateiarbeit in C Datei(engl. File) ist ein Menge von Daten (Bytes) auf einem geeigneten Datenträger. Festplatte USB-Stick Früher: Magnetband, Lochband, Lochkartenstapel, Diskette Eine Datei enthält Daten

Mehr

Ausdrucksbäume in verschiedenen Darstellungen

Ausdrucksbäume in verschiedenen Darstellungen Ausdrucksbäume in verschiedenen Darstellungen SWE-42 Infix mit notwendigen Klammern: (a + b) / (c - d) Infix vollständig geklammert: (((a) + (b)) / ((c) - (d))) Postfix a b + c d - / Präfix / + a b - c

Mehr

Java Einführung IO (Eingabe/Ausgabe)

Java Einführung IO (Eingabe/Ausgabe) Java Einführung IO (Eingabe/Ausgabe) Inhalt dieser Einheit Ein-/Ausgabe: Arbeiten mit Verzeichnissen und Dateien Schreiben und Lesen von Dateien bzw. Datenströmen Fehlerbehandlung beim Schreiben und Lesen

Mehr

Wie schreibt bzw. wie liest man die beiden unterschiedlichen Darstellungen?

Wie schreibt bzw. wie liest man die beiden unterschiedlichen Darstellungen? Problem 2: Wie schreibt bzw. wie liest man die beiden unterschiedlichen Darstellungen? Dazu stellt Java im Paket Ú º Ó eine Vielzahl von Klassen zur Verfügung... 15.1 Byteweise Ein- und Ausgabe Zuerst

Mehr

Einführung in die OOP mit Java Character-Streams Gliederung

Einführung in die OOP mit Java Character-Streams Gliederung Hochschule für Angewandte Wissenschaften Hamburg Hamburg University of Applied Sciences Einführung in die OOP mit Java Character-Streams Christian Dreyer 03.11.2008 Character-Streams 1 Gliederung Begriffsklärung

Mehr

Grundlagen der Programmierung. Kapitel 10: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei

Grundlagen der Programmierung. Kapitel 10: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei Ziele dieses Kapitels Grundlagen der ierung Dr. Christian Herzog Technische Universität München! Sie verstehen das Konzept der Ströme Sie können n wie,, Input und Output benutzen.! Sie können in Java Dateien

Mehr

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei Ziele dieses Kapitels Grundlagen der ierung Dr. Christian Herzog Technische Universität München! Sie verstehen das Konzept der Ströme Sie können n wie,, Input und Output benutzen.! Sie können in Java Dateien

Mehr

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei Ziele dieses Kapitels Grundlagen der ierung Dr. Christian Herzog Technische Universität München! Sie verstehen das Konzept der Ströme Sie können n wie,, Input und Output benutzen.! Sie können in Java Dateien

Mehr

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de Aufgaben: Ein Ausgabe Ein Rechner verwaltet nicht nur Daten, die während der Laufzeit des Programms erzeugt werden. Die meisten Programme greifen auf ältere Datenbestände zurück oder erzeugen für einen

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Programmieren I. Kapitel 15. Ein und Ausgabe

Programmieren I. Kapitel 15. Ein und Ausgabe Programmieren I Kapitel 15. Ein und Ausgabe Kapitel 15: Ein und Ausgabe Ziel: einen kleinen Einblick in die vielfältigen IO Klassen geben Grober Überblick Klasse File zur Verwaltung von Dateien Random

Mehr

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung. Java Übung Übung 3 Universität Duisburg-Essen Kommedia, Übung EinPro SS06, 2. Mai 2006 (UniDUE) 2. Mai 2006 1 / 17 Aufgabe 1 Umwandeln von do while in for Schleife. Listing 1: aufgabe3 1.java 1 public

Mehr

Streams. Thomas Schwotzer

Streams. Thomas Schwotzer Streams Thomas Schwotzer 1 Einführung Wir haben uns mit abstrakten Klassen beschäftigt. Ganz generell ist das Konzept der Abstraktion ein grundsätzliches in der Informatik. Wir ITler bauen Software-Maschinen.

Mehr

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer Java Kurs Objektorientierung II & die Java Klassenbibliothek Kristian Bergmann und Arthur Lochstampfer Vergleich class Apfel { String farbe; int gewicht; String geerntetin; class Erdbeere { String farbe;

Mehr

Ausnahmebehandlung PK11W-16,

Ausnahmebehandlung PK11W-16, Ausnahmebehandlung PK11W-16, 05. 12. 2011 1 Laufzeitfehler weitere Ausführung unmöglich Ausnahme geworfen Beispiele: ArrayIndexOutOfBoundsException NullPointerException ArithmeticException AssertionError

Mehr

Institut für Programmierung und Reaktive Systeme 10. Mai Programmieren II. 11. Übungsblatt

Institut für Programmierung und Reaktive Systeme 10. Mai Programmieren II. 11. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 10. Mai 2013 Programmieren II 11. Übungsblatt Hinweis: Dieses Übungsblatt enthält die zweite Pflichtaufgabe.

Mehr

Grundlagen der Programmierung! Kapitel 10: Ein- und Ausgabe! Ziele dieses Kapitels! Das Problem! Datei!

Grundlagen der Programmierung! Kapitel 10: Ein- und Ausgabe! Ziele dieses Kapitels! Das Problem! Datei! Ziele dieses Kapitels! Grundlagen der Programmierung! Dr. Christian Herzog! Technische Universität München!!" Sie verstehen das Konzept der Ströme! " Sie können Klassen wie Reader, Writer, InputStream

Mehr

Client-Server TCP/IP - Kodierung

Client-Server TCP/IP - Kodierung Client-Server TCP/IP - Kodierung Die klassen Ein (engl. Sockel) ist eine bidirektionale Netzwerk-Kommunikationsschnittstelle, deren Verwaltung das Betriebssystem übernimmt. Die Kombination aus IP-Adresse

Mehr

Einfache Liste: Ein Stapel (Stack) Ansatz. Schaubild. Vorlesung 1. Handout S. 2. Die einfachste Form einer Liste ist ein Stapel (stack).

Einfache Liste: Ein Stapel (Stack) Ansatz. Schaubild. Vorlesung 1. Handout S. 2. Die einfachste Form einer Liste ist ein Stapel (stack). Programmieren I Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 64 2 / 64 Motivation Hauptteil dieser Vorlesung sind die so genannten. Zur Motivation (und als Vorbereitung der Datencontainer-Klassen

Mehr

Grundlagen der Objektorientierten Programmierung - Ein- / Ausgabe-Streams

Grundlagen der Objektorientierten Programmierung - Ein- / Ausgabe-Streams Java-API: Stream-Klassen Die API-Bibliothek java.io bietet zahlreiche Stream-Klassen mit vielen Ein- und Ausgabefunktionen, mit deren Hilfe alle denkbaren Arten von Datenübertragungen und -konvertierungen

Mehr

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4. ! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur

Mehr

Institut für Programmierung und Reaktive Systeme 7. Mai Programmieren II. 11. Übungsblatt

Institut für Programmierung und Reaktive Systeme 7. Mai Programmieren II. 11. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 7. Mai 2018 Programmieren II 11. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern

Mehr

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme Schwerpunkte 3. Grundlegende Sprachkonstruktionen imperativer Programme Java-Beispiele: Temperature.java Keyboard.java Imperative Programmierung Beispiel für ein Programm aus drei Komponenten Variable,

Mehr

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal

Mehr

Kapitel 15: Ausnahmen und

Kapitel 15: Ausnahmen und Kapitel 15: Ausnahmen und Ein-/Ausgabe Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter

Mehr

Javakurs für Fortgeschrittene

Javakurs für Fortgeschrittene Javakurs für Fortgeschrittene Einheit 02: Streams filtern, Swing Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Datenströme (Streams) Filtern FilterWriter, - Reader 2.

Mehr

Dateien, Streams. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E.

Dateien, Streams. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E. Dateien, Streams INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was gehtes? Informationsaustausch Programme tauschen Information mit Umgebung über - Kommandozeilen Argumente -

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 23

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 23 Kapitel 16 Datei Aus- und Eingabe Seite 1 von 23 Datei Aus- und Eingabe - Für die Ausgabe auf Dateien und die Eingabe von Dateien werden die Streams ofstream und ifstream verwendet. - Sie sind in der Bibliothek

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 20. Januar 2016 Interface Sets M. Meiler Sortieren der Objekten einer

Mehr

Socket-Programmierung unter Java

Socket-Programmierung unter Java Datenströme -Programmierung unter Java 1 - Grundlagen: Datenströme JAVA unterscheidet Streams und Reader/Writer Zur Dateneingabe: InputStream oder Reader Zur Datenausgabe: OutputStream oder Writer Verwende

Mehr

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore. Hochschule Harz Versuch: fcopy Mit Java FB Automatisierung und Informatik Betriebssysteme Thema: Kopieren einer Datei unter der Kontrolle von Semaphoren Versuchsziele Konzepte der parallelen Programmierung

Mehr

Verteilte Systeme - Java Networking (Sockets) -

Verteilte Systeme - Java Networking (Sockets) - Verteilte Systeme - Java Networking (Sockets) - Prof. Dr. Michael Cebulla 30. Oktober 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 36 M. Cebulla Verteilte Systeme Gliederung Grundlagen TCP/IP

Mehr

8. Arbeiten mit Dateien

8. Arbeiten mit Dateien 8. Arbeiten mit Dateien www.c-programme.de Stefan Thiemert Kapitel 8 - Seite 1 von 6 8. 1. Allgemeines Bisher haben wir Daten, die wir in unseren Programmen erzeugt und verarbeitet haben, nur über den

Mehr

Programmieren 2 09 File-IO

Programmieren 2 09 File-IO Programmieren 2 09 File-IO Bachelor Medieninformatik Sommersemester 2016 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 Eingabe und Ausgabe in Java Daten im Programm während der Ausführungszeit:

Mehr

Socket-Programmierung unter Java

Socket-Programmierung unter Java Socket-Programmierung unter Java 1 - Grundlagen: Datenströme Datenströme JAVA unterscheidet Streams und Reader/Writer Zur Dateneingabe: InputStream oder Reader Zur Datenausgabe: OutputStream oder Writer

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Die Klassenhierarchie der Exceptions (Ausschnitt) Throwable Error Exception... RuntimeException IOException ParseException...

Mehr

Umleitung von Datenströmen

Umleitung von Datenströmen Datenströme Filter und Pipes In UNIX eingeführte Abstraktion beim Datenaustausch Programme arbeiten als Erzeuger und/oder als Verbraucher von Datenströmen ==> Filter Die Erzeuger- und Verbraucherschnittstelle

Mehr

3.11 Ausnahmen und Ein-/Ausgabe

3.11 Ausnahmen und Ein-/Ausgabe 3.11 Ausnahmen und Ein-/Ausgabe Wir werden uns in diesem Kapitel näher mit Ausnahmen und Ein-/Ausgabe in Java beschäftigen. Praktische Informatik I Wolfgang 3. Die Programmiersprache Java 3.11-1 Übersicht

Mehr

Ein- und Ausgabe. Algorithmen und Datenstrukturen II 1

Ein- und Ausgabe. Algorithmen und Datenstrukturen II 1 Ein- und Ausgabe Algorithmen und Datenstrukturen II 1 In den bisherigen Programmbeispielen wurden die Benutzereingaben immer über die Kommandozeile und Ausgaben immer durch Aufruf der Methode System.out.println

Mehr

Programmiertechnik Ausnahmen

Programmiertechnik Ausnahmen Programmiertechnik Ausnahmen Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Motivation public class Excep1 { public void doyourjob() { Scanner scanner = new Scanner(System.in); System.out.print("a:

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung 25.01.2007 Wintersemester 2006/2007 Computerlinguistik, Campus DU Überblick Seite 2 Datenströme: Ein und Ausgabe von Daten Java Collections Framework Eingabe/Ausgabe Seite 3 Lesen, Schreiben

Mehr

Algorithmen und Programmierung III

Algorithmen und Programmierung III Musterlösung zum 4. Aufgabenblatt zur Vorlesung WS 2006 Algorithmen und Programmierung III von Christian Grümme Aufgabe 1 Amortisierte Analyse 10 Punkte Zu erst betrachte ich wie oft die letzte Ziffer

Mehr

Autoboxing - Nachtrag

Autoboxing - Nachtrag Autoboxing - Nachtrag Mit dem Autoboxing ist eine Reihe von Unregelmässigkeiten verbunden, die der Programmierer beachten muss, um Fehler zu vermeiden. aus: Christian Ullenboom Java ist auch eine Insel

Mehr

hue13 January 30, 2017

hue13 January 30, 2017 hue13 January 30, 2017 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Ausnahmen

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Ausnahmen Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Ausnahmen Motivation Anwendungsbeispiel 1: java Excep1 a: 15 b: 3 a / b = 5 Job done. Konsole Anwendungsbeispiel 2: Konsole java

Mehr

Distributed Computing Group

Distributed Computing Group JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird

Mehr

Übung Informatik I - Programmierung - Blatt 6

Übung Informatik I - Programmierung - Blatt 6 RHEINISCH- WESTFÄLISCHE TECHNISCHE HOCHSCHULE AACHEN LEHR- UND FORSCHUNGSGEBIET INFORMATIK II RWTH Aachen D-52056 Aachen GERMANY http://programmierung.informatik.rwth-aachen.de LuFG Informatik II Prof.

Mehr

Dateien/Streams. Arthur Zaczek. Okt 2015

Dateien/Streams. Arthur Zaczek. Okt 2015 Arthur Zaczek Okt 2015 1 Input/Output 1.1 Was ist ein Stream? Figure 1: InputStream Figure 2: OutputStream Graphik: (C) Copyright 1995-2009 Sun Microsystems, Inc. 1.2 Warum streamen? Reduktion des Speicherverbrauchs:

Mehr

Betriebssysteme. Wintersemester Kapitel 4 Ein- / Ausgabe und Dateisysteme. Patrick Kendzo

Betriebssysteme. Wintersemester Kapitel 4 Ein- / Ausgabe und Dateisysteme. Patrick Kendzo Betriebssysteme Wintersemester 2013 Kapitel 4 Ein- / Ausgabe und Dateisysteme Patrick Kendzo ppkendzo@gmail.com Programm Inhalt Einleitung Prozesse und Threads Speicherverwaltung Ein- / Ausgabe und Dateisysteme

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 14 Dateiverwaltung, das Stream-Konzept... 14-2 14.1 Datenströme... 14-2 14.1.1 Datenströme in Java, Paket java.io.*... 14-3 14.1.2 Standarddatenströme... 14-4 14.2 Klasse java.io.file... 14-7 14.3

Mehr

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker I/O-Serialisierung und Multithreading PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker Dr.-Ing. Steffen Helke Technische Universität Berlin Fachgebiet Softwaretechnik 27. Mai 2013 Übersicht

Mehr

3. Grundlegende Sprachkonstruktionen imperativer Programme

3. Grundlegende Sprachkonstruktionen imperativer Programme 3. Grundlegende Sprachkonstruktionen imperativer Programme Java-Beispiele: Temperature.java Keyboard.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 4. Nov. 2015 2 Schwerpunkte

Mehr