Einführung in die Informatik II Ströme und Dateien

Größe: px
Ab Seite anzeigen:

Download "Einführung in die Informatik II Ströme und Dateien"

Transkript

1 Einführung in die Informatik II Ströme und Dateien Prof. Bernd Brügge, Ph.D Institut für Informatik Technische Universität München Sommersemester Juni 2004 Letzte Änderung: :03 Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

2 Ziele dieser Vorlesung Sie verstehen die Konzept von Strömen und Dateien Sie können die Java-Klassen Reader, Writer, InputStream und OutputStream benutzen Sie verstehen Java's Konzept für die plattformunabhängige Repräsentation von Dateien in hierarchischen Datei-Systemen. Sie verstehen das Konzept der Serialisierung/Deserialisierung von Objekten. Sie können Dateien entwerfen und implementieren Textdateien Binäre Dateien Dateien von beliebigen Objekten Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

3 Einleitung In den Informatik-Systemen, die wir bisher implementiert haben, haben wir Klasssen deklariert, instantiiert, und über Methodenaufrufe den Attributen Werte zugewiesen. Die Werte waren allerdings nur während der Laufzeit des Systems verfügbar. 1. Häufig sollen die Werte bei einem erneuten Lauf des Systems wieder zur Verfügung stehen. 2. In vielen Fällen werden auch Werte von einem Informatik-System erzeugt, die von einem anderen System benötigt werden. 3. Bei interaktiven Systemen wollen wir außerdem bereits während der Laufzeit Daten mit der Umgebung austauschen: Wir wollen Werte über eine Tastatur eingeben lassen Andere Werte sollen auf dem Bildschirm erscheinen Verzeichnisse sollen gelesen und beschrieben werden. Zur Speicherung von Werten und zur Interaktion mit der Umgebung führen wir jetzt die Konzepte Datei und Strom ein. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

4 Datei Wir haben bereits den Datenaustausch mit der Umgebung des Systems zugelassen, allerdings sehr spärlich. System.out.println(): Ausdrucken von Daten auf dem Bildschirm gettext(): Auslesen eines Textes aus einer graphischen Komponente vom Typ TextField. Unser Ziel ist jetzt die Modellierung von externen Speichern und die Modellierung der Interaktion von Informatik-Systemen mit ihrer Umgebung. Definition Datei: Eine Verwaltungseinheit zur Repräsentation von externen Daten nach gewissen Organisationsformen, die den Zugriff innerhalb des Informatik-Systems auf die Daten festlegen. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

5 Strom Um auf Dateien innerhalb eines Informatik-Systems zugreifen zu können, führen wir den Begriff des Stroms ein. Definition Strom: Die interne Repräsentation einer (externen) Datei oder eines Ein-/Ausgabe (E/A)-Gerätes in einem Informatik-System. Definition Eingabe: Das Lesen der Daten von einer Datei oder von einem Eingabe-Gerät in einen Strom. Der Strom heißt dann Eingabestrom. Definition Ausgabe: Das Schreiben von Daten eines Stroms auf eine Datei oder ein Ausgabe-Gerät. Der Strom heißt dann Ausgabestrom. Ein Strom hat eine Quelle und eine Senke. Achtung: In Goos II hat der Begriff Strom eine andere Bedeutung: Iterator über Daten. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

6 Beispiele von Eingabe- und Ausgabeströmen Eine Tastatur ist eine Quelle für einen Eingabestrom von Zeichen an ein Programm. Tastatur Ein Bildschirm ist ein Senke für einen Ausgabestrom von Zeichen, die von einem Programm kommen. Programm Ausgabestrom Eingabestrom Programm Bildschirm Eine Datei ist Senke oder Quelle für Ströme von Zeichen Programm Platte, Magnet- Band Datei Datei Ausgabestrom Eingabestrom Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

7 Entwurf von Strömen Wir modellieren Ströme als Klassen. Allgemein können wir sagen: Ein Strom hat zwei private Attribute Name: Bezeichner der mit dem Strom verbundenen Quelle oder Senke Marke: Zeiger auf das derzeitige Element (current element). Ein Strom stellt folgende Operationen bereit: open(): Öffnen der Verbindung mit einer (externen) Datei read(): Lesen eines Elements aus dem Strom. write(): Schreiben eines Elements in den Strom. close(): Schließen der Verbindung mit der Datei. Die Signatur der Operationen und die Implementierung von Strömen ist abhängig von der Programmiersprache; Implementierung von Dateien ist vom Betriebssystem abhängig. Java unterstützt Ströme und Dateien. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

8 Ströme und Dateien in Java Java stellt eine große Anzahl von unterschiedlichen Strömen für Ein- und Ausgabe (Reader, Writer, InputStream, OutputStream) und eine Betriebssystem-unabhängige Repräsentation für Dateien (File) bereit, die alle im Paket java.io definiert sind. Object Reader Writer InputStream OutputStream File Klasse Reader Writer InputStream OutputStream File Beschreibung Abstrakte Klasse für textuelle Eingabeströme Abstrakte Klasse für textuelle Ausgabeströme Abstrakte Klasse für binäre Eingabeströme Abstrakte Klasse für binären Ausgabeströme Plattform-unabhängige Repräsentation von Dateien Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

9 Ströme und Dateien in Java Java stellt eine große Anzahl von unterschiedlichen Strömen für Ein- und Ausgabe (Reader, Writer, InputStream, OutputStream) und eine Betriebssystem-unabhängige Repräsentation für Dateien (File) bereit, die alle im Paket java.io definiert sind. Object Reader Writer InputStream OutputStream File Klasse Reader Writer InputStream OutputStream File Beschreibung Abstrakte Klasse für textuelle Eingabeströme Abstrakte Klasse für textuelle Ausgabeströme Abstrakte Klasse für binäre Eingabeströme Abstrakte Klasse für binären Ausgabeströme Plattform-unabhängige Repräsentation von Dateien Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

10 InputStream: Modellierung binärer Eingabeströme InputStream ByteArray InputStream FileInput Stream FilterInput Stream ObjectInput Stream PipedInput Stream Buffered Input Stream DataInput Stream Klasse Beschreibung ByteArrayInputSteam Einlesen von Reihungen vom Typ byte als Strom FileInputStream Einlesen von Binär-Dateien FilterInputStream Ermöglicht gefiltertes Einlesen von Daten auf verschiedene Arten BufferedInputStream Ermöglicht das Puffern von Eingabedaten DataInputStream Lesen von vordefinierten elementaren Java-Typen ObjectInputStream Deserialisieren von Objekten PipedInputStream Lesen von Binärdaten aus einem anderen Thread ( Info III) Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

11 Reader: Modellierung textueller Eingabeströme Reader Buffered Reader CharArray Reader InputStream Reader PipedReader StringReader LineNumber Reader FileReader Klasse BufferedReader CharArrayReader FileReader PipedReader StringReader LineNumberReader Beschreibung Gepufferte Eingabe bei textuellen Eingabeströmen Einlesen von Reihungen vom Typ char als Strom Einlesen von Text-Dateien Lesen von Textdaten aus einem anderen Thread ( Info III) Einlesen von Zeichenketten (String) als Strom Zählt Anzahl der Text-Zeilen, die bereits gelesen wurden. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

12 OutputStream: Modellierung binärer Ausgabeströme OutputStream ByteArray OutputStream FileOutput Stream FilterOutput Stream ObjectOutput Stream PipedOutput Stream BufferedOutput Stream DataOutput Stream Klasse ByteArrayOutputSteam FileOutputStream FilterOutputStream BufferedOutputStream DataOutputStream ObjectOutputStream PipedOutputStream Beschreibung Schreiben von Binärdaten in Reihungen vom Type byte Schreiben von Bytes in Binär-Dateien Ermöglicht das gefilterte Schreiben von Daten auf verschiedene Arten Ermöglicht das Puffern von Ausgabedaten Schreiben von vordefinierten elementaren Java-Typen Serialisieren von Objekten Weitergabe von Binärdaten an anderen Thread ( Info III) Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

13 Writer: Modelliert textuelle Ausgabeströme Writer Buffered Writer CharArray Writer OutputStream Reader Piped Writer Print Writer String Writer FileWriter Klasse BufferedWriter CharArrayWriter FileWriter PipedWriter PrintWriter StringWriter Beschreibung Gepufferte Ausgabe bei textuellen Ausgabeströmen Schreiben von Textdaten in Reihungen vom Typ char Schreiben von Textzeichen in Text-Dateien Weitergabe von Textdaten an anderen Thread ( Info III) Textuelle Ausgabe von Java's Basistypen Schreiben von Textdaten in Zeichenketten (String) Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

14 Text-Datei in Java Definition Text-Datei (text file): Eine Datei, in der die Daten vom Typ char (bzw. Character) sind. File * Character Da die Codierung und Decodierung von char-werten in Java auf Unicode basiert, sind Text-Dateien portierbar, d.h. auch auf verschiedenen Plattformen lesbar Definition Text-Editor: Ein Programm, dass Benutzern das interaktive Eintragen, Ändern und Löschen von Zeichen in einer Text- Datei ermöglicht. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

15 Binär-Datei Definition Binär-Datei (binary file): Eine Datei, in der die Daten vom Typ byte (bzw. Byte) sind. File * Byte Binär-Dateien sind im allgemeinen nicht portierbar, da verschiedene Rechner verschiedene Repräsentationen für Binär-Daten verwenden. Java-spezifische Binär-Dateien (z.b..class-dateien) sind auf allen Rechnern lesbar, die die JVM-Spezifikation einhalten, da Java die Repräsentation von binären Dateien selbst definiert. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

16 Datei-Systeme, Dateien und Verzeichnisse Die Klasse File repräsentiert Dateien und Verzeichnissen in einer Betriebssystem- bzw. Plattform-unabhängigen Weise. Beschreibung von hierarchischen Datei-Systemen: Ein Datei-System (file system) besteht aus Dateien (files) und Verzeichnissen (directories). Verzeichnisse können wieder aus Dateien und weiteren Verzeichnissen bestehen. Jedes Datei-System hat ein Verzeichnis als Wurzel. Alle Dateien sind in der Hierarchie "ist Teil von" angeordnet. Ein Pfadname ist die Beschreibung einer Datei in dieser Hierarchie. Das Verzeichnis, in dem sich ein Benutzer bzw. ein Programm befindet, wird aktuelles Verzeichnis (current directory) genannt. Der absolute Pfadname beschreibt eine Datei ausgehend von der Wurzel des Datei-Systems. Ein relativer Pfadname beschreibt eine Datei relativ zum aktuellen Verzeichnis Wie sieht das entsprechende UML-Modell aus? Können wir ein Entwurfsmuster verwenden? Welches? Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

17 UML-Modell des Java-Dateisystems Dateisystem * Datei (File) Verzeichnis Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

18 Absoluter und relativer Pfadname Gegeben sei das Java Programm MyClass.java in einem Unixbasierten Dateisystem root home index.html java examples Aktuelles Verzeichnis datafiles MyClass.java MyClass.class Aktuelles Verzeichnis: /root/java/examples Absoluter Pfadname: Relativer Pfadname: MyClass.java /root/java/examples/myclass.java Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

19 Die Klasse File public class File extends Object implements Serializable { // Konstanten Plattformunabhängigkeit: public static final String pathseparator; public static final char pathseparatorchar; Unix: / public static final String separator; Windows: \ public static final char separatorchar; // Konstruktoren Mac OS: : public File(String path); File-Methoden erzeugen public File(String path, String name); // Öffentliche Instanz-Methoden keine Ausnahmen! public boolean canread(); // Ist die Datei lesbar? public boolean canwrite(); // Ist die Datei schreibbar? public boolean delete(); // Lösche die Datei public boolean exists(); // Existiert die Datei? public String getparent(); // Elternknoten von Datei oder Verzeichnis public String getpath(); // Absoluter Pfadname der Datei public boolean isdirectory(); // Ist das Objekt ein Verzeichnis? public boolean isfile(); // Ist das Objekt eine Datei? public long lastmodified(); // Wann wurde es letztes Mal modifziert? public long length(); // Wieviele Bytes enthält es? public String[] list(); // Inhalt dieses Verzeichnisses public boolean renameto(file f); // Gib Datei neuen Namen f } Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

20 Verbindung von Dateien und Strömen Jede Programmiersprache muss ein Konzept bereitstellen, um Ströme mit Dateien zu verbinden. In Java geschieht die Verbindung im Konstruktor der Strom-Klasse, die mit dem Dateinamen als Argument aufgerufen wird. Beispiel: String fname = "/usr/bob/src/trivial.java"; FileWriter outs = new FileWriter (fname); verbindet den Ausgabestrom outs mit einer Datei namens fname. In Java unterscheiden wir Text-Dateien und Binär-Dateien Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

21 Die Standardein-/-ausgabe in Java basiert auf Strömen Informelles Modell Die Klasse System.out ist ein textueller Ausgabestrom vom Typ PrintWriter Bildschirm System.out Programm Speicher Tastatur System.in System.in ist ein binärer Eingabestrom vom Typ InputStream: Die Eingabe muss Byte für Byte gelesen werden Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

22 2 wichtige Konzepte Zur Verbesserung der Laufzeit von Informatik-Systemen mit Strömen gibt es 2 wichtige Konzepte: Puffern von Daten: Puffer werden benutzt, wenn das Ein-/Ausgabe- Gerät signifikant langsamer als der Prozessor ist. Konkatenation von Strömen: Wenn die Ausgabe eines Stroms die Eingabe eines anderen Stroms ist. Beispiel "Unix pipes": ls more Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

23 Puffern von Daten Definition Eingabepuffer (input buffer): Eine Region im Speicher für die temporäre Speicherung von bereits gelesenen, aber noch nicht verarbeiteten Daten: Anstatt ein Byte nach dem anderen von dem Eingabegerät zu lesen, wird eine große Anzahl von Bytes gleichzeitig in den internen Puffer gelesen. Die Bytes werden dann einzeln bei jeder Lese-Operation aus dem Eingabepuffer ins Programm transferiert. Definition Ausgabepuffer (output buffer): Eine Region im Speicher für die temporäre Speicherung von zu schreibenden Daten. Daten werden erst auf das Ausgabegerät geschrieben, wenn der Puffer voll ist (oder bei einer sogenannten flush()-operation). Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

24 Puffern von Daten (2) Viele E/A-Geräte unterstützen den Transfer von Blöcken. Der Datentransfer zwischen Puffern und Objekten (z.b. beim Einlesen von Objektattributwerten aus einer Datei) ist im allgemeinen schnell, da sowohl Puffer als auch Objekte gewöhnlich im Programmspeicher angelegt werden. Puffern verbessert die Laufzeit von Programmen (natürlich auf Kosten des für die Puffer zusätzlich benötigen Speicherplatzes) Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

25 Konkatenation von Strömen Die Deklaration Strom Datei Strom BufferedReader instream = new BufferedReader(new FileReader(fileName)); konkateniert zwei Ströme BufferedReader und FileReader. Das Programm kann dann instream.readline() benutzen, um die Datei filename zeilenweise - und nicht Zeichen für Zeichen - zu lesen. Interpretation: Die Daten fließen von der Text-Datei erst durch FileReader, dann durch BufferedReader zum Speicher. instream Speicher BufferedReader FileReader filename Text-Datei Analogie aus der Klempnerei: Konkatenation von Strömen ist nichts anderes, als die Zusammensetzung eines Rohrs aus zwei Teilrohren. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

26 Konkatenation von Strömen (2) Zur Konkatenation von Strömen ist es notwendig, dass der eine Strom bei seiner Erzeugung einen anderen Strom als Parameter erhält. Dies ist der Fall im Konstruktor für BufferedReader: Public class BufferedReader extends Reader { } // Konstruktor public BufferedReader(Reader instream); //Instanz-Methode public String readline() throws IOException; FileReader ist Unterklasse von Reader,der Aufruf von new ergibt also einen Strom vom Typ Reader BufferedReader instream = new BufferedReader(new FileReader(fileName)); Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

27 Wann benutzen wir welchen Strom? Bei binärer Ein-/Ausgabe: Unterklassen von InputStream und OutputStream. Bei Textueller Ein-Ausgabe: Unterklassen von Reader und Writer. Beispiel: PrintWriter ist eine Unterklasse von Writer. Sie stellt Methoden zur textuellen Ausgabe von Objekten vom Typ int, long, float, double, String und Object bereit: public void print(int i); public void print(long l); public void print(float f); public void print(double d); public void print(string s); public void print(object o); public void println(int i); public void println(long l); public void println(float f); public void println(double d); public void println(string s); public void println(object o); Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

28 Was machen wir jetzt? 1. Kleine Fallstudie für die Benutzung von Strömen und Text-Dateien: Entwurf eines Text-Editors Schreiben einer Text-Datei Lesen einer Text-Datei 2. Schreiben und Lesen von Binär-Dateien Schreiben einer Binär-Datei Lesen einer Binär-Datei 3. Schreiben und Lesen von beliebigen Objekten Serialisierung Deserialisierung Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

29 1. Entwurf eines Text-Editors Problembeschreibung: Zwei wichtige Aufgaben eines Text-Editors sind das Lesen von Text-Dateien und das Schreiben von Text-Dateien. Lösung: Aus Zeitgründen machen wir nur eine "verkürzte Analyse" und konzentrieren uns dann vorwiegend auf den detaillierten Entwurf und die Implementierung Speicher Eingabestrom Ausgabestrom Text-Datei Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

30 Modell der Bedienoberfläche Label TextField Button Layout North prompt: ReadFile WriteFile TextArea zum Display der Datei Layout Center Implementierung der Bedienoberfläche => Später im Block Interaktive Programmierung und bei den Übungen ( Projekt Editor ) Zunächst Dateien Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

31 Format von Text-Dateien Text-Dateien haben folgendes Format: Eine Folge von Zeichen, getrennt durch Null oder durch Zeilen-Ende Zeichen \n. Das Ende der Datei wird mit dem speziellen Datei-Ende Zeichen \eof angezeigt. eins\nzwei\ndrei\nvier\eof Zeilen-Ende (\n) Datei eins zwei drei vier Datei-Ende (\eof) Zeichen. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

32 Anwendungsfälle für den Text-Editor Anwendungsfall "Schreiben einer Text-Datei": Der Ereignisfluss besteht aus den folgenden 3 Schritten: Verbinde den Ausgabestrom mit einer Text-Datei. Schreibe die einzelnen Daten auf den Strom (in einer Schleife). Schließe den Ausgabestrom. Anwendungsfall "Lesen einer Text-Datei" Der Ereignisfluss besteht aus den folgenden 3 Schritten: Verbinde den Eingabestrom mit der Text-Datei. Lies die einzelnen Daten vom Strom (in einer Schleife). Schließe den Eingabestrom. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

33 Schreiben einer Text-Datei (Detaillierter Entwurf) Weil wir eine Text-Datei schreiben wollen, schauen wir uns die Unterklassen von Writer an. Writer write() Wir wählen FileWriter, denn diese Klasse wurde explizit für die Ausgabe in Text-Dateien entworfen. OutputStream Writer close() open() FileWriter Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

34 Schreiben einer Text-Datei (Detaillierter Enwurf 2) Spezifikation der Klasse FileWriter: public class FileWriter extends OutputStreamWriter { public FileWriter (String filename) throws IOException; public FileWriter (String filename, boolean append) throws IOException; } Die Methode write() wird von der Superklasse Writer geerbt: public void write (String s) throws IOException; Da der Konstruktor von FileWriter und die Methode write() Ausnahmen vom Typ IOException werfen, werden wir sie nur innerhalb eines try-catch Gerüsts benutzen. Allgemein gilt: Alle öffentlichen Methoden von Strömen werfen Ausnahmen vom Typ IOException (auch wenn wir sie im folgenden nicht immer zeigen). Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

35 Schreiben einer Text-Datei (Implementierung) writetextfile() nimmt eine mehrzeilige Zeichenkette von Typ TextArea und schreibt sie auf eine Text-Datei mit Namen filename. Verbindung des Ausgabestroms mit einer Text-Datei namens filename. private void writetextfile(textarea display, String filename) { try { FileWriter outstream = new FileWriter(fileName); outstream.write(display.gettext()); outstream.close(); } catch (IOException e) { display.settext("e/a-fehler: " + e.getmessage() + "\n"); e.printstacktrace(); } } // writetextfile() Abfangen der Ausnahme IOException. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

36 Lesen einer Text-Datei (Detaillierter Entwurf) Da es sich um eine Text-Datei handelt, schauen wir uns in diesem Fall die Klasse Reader an. Wir müssen Zeichen (Typ char) aus einer Datei lesen: FileReader Ausserdem wollen wir die Zeichen zeilenweise lesen: BufferedReader Reader BufferedReader +String: readline() InputStream Reader FileReader Initialisierung durch Konkatenation der Ströme: new BufferedReader(new FileReader(filename)) Lesen der Zeilen dann mit der öffentlichen Methode readline() Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

37 Lesen einer Text-Datei (Implementierung) Konkatenation der Ströme private void readtextfile(textarea display, String filename) { try { BufferedReader instream bei end-of-file gibt readline() null zurück = new BufferedReader(new FileReader(fileName)); String line = instream.readline(); // Lies eine Zeile while (line!= null) { // solange noch was da ist display.append(line + "\n"); // Stelle die Zeile dar line = instream.readline(); // Lies die nächste Zeile } instream.close(); // Schließe den Strom } catch (FileNotFoundException e) { display.settext("ioerror: File NOT Found: " + filename + "\n"); e.printstacktrace(); } catch ( IOException e ) { display.settext("ioerror: " + e.getmessage() + "\n"); e.printstacktrace(); } } // readtextfile() Eine nicht existierende Datei erzeugt beim Aufruf von new FileReader die Ausnahme FileNotFoundException Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

38 Robuste und Benutzerfreundliche Programmierung Wie wir gesehen hatten, wird beimversuch, einen Strom mit new FileReader(fileName)zu öffnen, die Ausnahme FileNotFoundException geworfen, wenn die Datei namens filename nicht existiert. Dies kommt vor, wenn Benutzer einen nicht existenten Dateinamen angeben oder die Datei nicht dort ist, wo sie sein sollte (was sehr häufig der Fall ist :-) Abfangen der Ausnahme ist ein Beispiel für robuste Programmierung. aber die Fehlermeldung ist sehr benutzer-unfreundlich Gibt es eine Möglichkeit, diese Art von Fehler vorher zu entdecken, um den Benutzern bessere Fehlermeldungen geben zu können? Die Klasse java.io.file enthält Methoden, die man dafür benutzen kann. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

39 Benutzerfreundliche Programmierung Um den Benutzer vor unverständlichen (Fehler-)Meldungen zu schützen, schreiben wir jetzt zwei Methoden, in denen wir unsere eigenen Ausnahmen erzeugen: Überprüfung der Lesbarkeit von Dateien Überprüfung der Schreibbarkeit von Dateien Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

40 Überprüfung der Lesbarkeit von Dateien Kreiere ein File-Objekt für die Datei filename. private boolean isreadablefile(string filename) { try { File file = new File(fileName); if (!file.exists()) throw (new FileNotFoundException("No such File:" + filename)); if (!file.canread()) throw (new IOException("File not readable: " + filename)); return true; } catch (FileNotFoundException e) { System.out.println("IOERROR: File NOT Found: " + filename + "\n"); return false; } catch (IOException e) { System.out.println("IOERROR: " + e.getmessage() + "\n"); return false; } } // isreadablefile Prüfe Existenz und Lesbarkeit mit Methoden aus File Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

41 Überprüfung der Schreibbarkeit von Dateien private boolean iswriteablefile(string filename) { try { File file = new File(fileName); if (filename.length() == 0) throw (new IOException("Invalid file name: " + filename)); if (file.exists() &&!file.canwrite()) throw (new IOException("IOERROR: File not writeable: " + filename)); return true; } catch (IOException e) { display.settext("ioerror: " + e.getmessage() + "\n"); return false; } } // iswriteablefile() Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

42 2. Schreiben und Lesen von Binär-Dateien Binär-Dateien haben kein Datei-Ende Zeichen (\eof). Ereignisfluss beim Lesen bzw. Schreiben von Binärdaten: Verbinde einen Strom mit der Datei. Lies oder schreibe die Binärdaten in einer Schleife. Schließe den Strom. Beispiel: Schreiben von Studenten-Daten Alter: int ECTS: double Name: String Name Name Name Name Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

43 Detaillierter Entwurf Welche Ströme und Methoden verwenden wir? Strom: Unterklasse von OutputStream. Konstruktor: FileOutputStream(String filename) Schreibe-Methoden aus DataOutputStream Erlaubt das Schreiben von Strings und Doubles public class DataOutputStream extends FilterOutputStream { // Konstructor public DataOutputStream(OutputStream out); // Ausgewählte öffentliche Instanzen-Methoden public void flush() throws IOException; public final void writechars(string s) throws IOException; public final void writedouble(double d) throws IOException; public final void writeint(int i) throws IOException; public final void writeutf(string s) throws IOException; } Unicode Text Format (UTF) ist ein Schema zum binären Codieren von Java's Unicode-Zeichenvorrat. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

44 Schreiben von Binärdaten in eine Datei Verbindung des Stroms mit der Binär-Datei: DataOutputStream outstream = new DataOutputStream(new FileOutputStream (filename)); Schreiben der Daten in die Datei: for (int k = 0; k < 5; k++) { // 5 Studenten outstream.writeutf("name" + k); // Name outstream.writeint((int)(20 + Math.random() * 25)); // Alter outstream.writedouble(math.random() * 500); // Punkte } Interpretierbar z.b. als zwei 32-bit-Werte (z.b. int) ein 64-bit-Wert (z.b. double) acht 8-bit-ASCII-Zeichen Die Binär-Datei enthält keine Informationen, wie die Binärdaten zu interpretieren sind große Sorgfalt beim Einlesen erforderlich! Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

45 Methode zum Schreiben von Binärdaten private void writebinary( String filename ) { try { DataOutputStream outstream // Öffne den Strom = new DataOutputStream(new FileOutputStream(fileName)); for (int k = 0; k < 5; k++) { // 5 Studenten String name = "Name" + k; outstream.writeutf("name" + k); // Name outstream.writeint((int)(20 + Math.random() * 25)); // Alter outstream.writedouble( Math.random() * 10); // Punkte } // for outstream.close(); // Schliesse den Strom } catch (IOException e) { display.settext("ioerror: " + e.getmessage() + "\n"); } } // writebinary() Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

46 Lesen von Binärdaten aus einer Datei Strom: Unterklasse von InputStream Konstruktor: FileInputStream(String filename) Lese-Methoden aus DataInputStream Pendant zu DataOutputSteam public class DataInputStream extends FilterInputStream { // Instanz-Methoden public final boolean readboolean() throws IOException; public final byte readbyte() throws IOException; public final char readchar() throws IOException; public final double readdouble() throws IOException; public final float readfloat() throws IOException; public final int readint() throws IOException; public final long readlong() throws IOException; public final short readshort() throws IOException; public final String readutf() throws IOException; } Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

47 Schleife zum Lesen von Binärdaten Da Binär-Dateien kein \eof-zeichen haben, müssen wir das Ende der Datei mit der Ausnahme EOFException abfangen. try { while (true) { // Unendliche Schleife String name = instream.readutf(); // Lies Studenten int alter = instream.readint(); double punkte = instream.readdouble(); display.append(name + " " + alter + " " + punkte + "\n"); } // while } catch (EOFException e) {} // bis zum Ende der Datei Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

48 Methode zum Lesen von Binärdaten aus einer Datei private void readbinary(string filename) { try { DataInputStream instream = new DataInputStream(new FileInputStream(fileName)); display.settext("name Alter Note\n"); try { while (true) { String name = instream.readutf(); int alter = instream.readint(); double note = instream.readdouble(); display.append(name + " " + alter + " " + note + "\n"); } // while } catch (EOFException e) { // bis zur EOFException } finally { Konkatenation der Ströme geschachtelter try-block finally bezieht sich auf den inneren try-block instream.close(); // Schließe den Strom } } catch (FileNotFoundException e) { display.settext("ioerror: File NOT Found: " + filename + "\n"); } catch (IOException e) { display.settext("ioerror: " + e.getmessage() + "\n"); } } // readbinary() Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

49 3. Schreiben und Lesen von beliebigen Objekten 6/8/2004 Objekt-Serialisierung ist der Prozess des Schreibens eines Objektes auf einen Strom als eine Serie von Bytes. Objekt-Deserialisierung ist der Prozess des Lesens eines Objektes von einem Strom als eine Serie von Bytes. Objekte serializiert man mit ObjectOutputStream und deserialisiert sie mit ObjectInputStream public class ObjectOutputStream extends OutputStream implements ObjectOutput { public final void writeobject(object obj) throws IOException; } public class ObjectInputStream extends InputStream implements ObjectInput { public final Object readobject() throws IOException, ClassNotFoundException; } Um ein Objekt zu serialisieren, muss es als Argument beim Aufruf der writeobject()-methode übergeben werden. Zur Deserialisierung eines Objekts wird die readobject()-methode aufgerufen. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

50 Die Klasse Student als serialisierbare Klasse public class Student implements java.io.serializable { private String name; private int alter; private double punkte; public Student() {} public Student (String fname, int yr, double fpunkte) { name = fname; alter = yr; punkte = fpunkte; } public String tostring() { return name + "\t" + alter + "\t" + punkte; } } // Student Wichtig: Die Java Schnittstelle Serializable hat weder Methoden noch Konstanten (sog. Marker Interface) Klassen müssen diese Schnittstelle trotzdem "implementieren", um anzuzeigen, dass sie serialisiert und deserialisiert werden dürfen. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

51 Dateiein-/-ausgabe von serialisierbaren Objekten public void writetofile (FileOutputStream outstream) throws IOException { ObjectOutputStream oostream = new ObjectOutputStream(outStream); oostream.writeobject(this); oostream.flush(); } // writetofile() Schreibe das (serialisierte) Objekt auf den Strom. public void readfromfile (FileInputStream instream) throws IOException, ClassNotFoundException { ObjectInputStream oistream = new ObjectInputStream(inStream); Student s = (Student) oistream.readobject(); this.name = s.name; this.alter = s.alter; this.punkte = s.punkte; } // readfromfile() Lies das (deserialisierte) Objekt vom Strom. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

52 Schreiben von Objekten als Binärdaten in eine Datei private void writebinaryrecords (String filename) { try { FileOutputStream outstream = new FileOutputStream(fileName); for (int k = 0; k < 5; k++) { // Erzeuge 5 Zufallsobjekte String name = "name" + k; int alter = (int)( Math.random() * 4); double punkte = Math.random() * 12; Student student = new Student(name, alter, punkte); // Object display.append("output: " + student.tostring() + "\n"); student.writetofile(outstream) ; // Schreibe sie in die Datei } // for outstream.close(); } catch (IOException e) { display.append("ioerror: " + e.getmessage() + "\n"); } } // writebinaryrecords() führt Serialisierung aus Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

53 Lesen von Objekten als Binärdaten aus einer Datei private void readbinaryrecords(string filename) { try { FileInputStream instream = new FileInputStream(fileName); display.settext("name\talter\tpunkte\n"); führt Deserialisierung aus try { while (true) { // Unendliche Schleife Student student = new Student(); // Kreiere Student student.readfromfile(instream); // und lies die Daten display.append(student.tostring() + "\n"); } } catch (EOFException e) {} // EOFException (Dateiende) instream.close(); } catch (FileNotFoundException e) { display.append("ioerror: File NOT Found: " + filename + "\n"); } catch (IOException e) { display.append("ioerror: " + e.getmessage() + "\n"); } catch (ClassNotFoundException e) { display.append("error: Class NOT found " + e.getmessage() + "\n"); } } // readbinaryrecords() Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

54 Zusammenfassung Eine Datei ist eine Sammlung von Daten, die extern auf einem Sekundärspeicher (Platte, CD, Band etc.) gespeichert sind. Ein Strom ist ein Objekt, das Daten von Geräten, Dateien oder anderen Objekten holt bzw. an Geräte, Dateien oder andere Objekte liefert: Ein Eingabestrom liefert Daten von einer externen Quelle an ein Programm. Ein Ausgabestrom liefert Daten vom Programm an eine externe Senke. Ein Puffer ist ein Bereich im Hauptspeicher, der temporär genutzt wird, um Daten während der Ein- oder Ausgabe zu speichern. Problem des detaillierten Entwurfs der Ein-/Ausgabe für Java- Programme: Welche Ströme und Methoden aus der Java-Klassenbibliothek soll ich benutzen? Woher weiß ich, ob es die Klassen gibt, die ich brauche? Wo finde ich sie? Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

55 Zusammenfassung (2) allgemeiner Algorithmus für Implementierung von Ein-/Ausgabe: Verbinde den gewählten Ein-/Ausgabestrom mit der Datei Führe die Ein-/Ausgabe durch Schließe den Ein-/Ausgabestrom. Die Klasse java.io.file erlaubt eine Überprüfung von Dateien, bevor man sie mit dem gewählten Strom verbindet. Analogie: "Überprüfen der Wassertemperatur im Schwimmbad, ohne dass man gleich reinspringen muss." File erlaubt eine plattformunabhängige Behandlung von Datei- Systemen und Dateien. Serialisierung erlaubt das Schreiben eines beliebigen Objekts auf einen (binären) Ausgabestrom. Deserialisierung erlaubt das Einlesen serialisierter Objekte aus einem (binären) Eingabestrom. Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

56 Implementierung des Text-Editors Label TextField Button Layout North prompt: ReadFile WriteFile Display: TextArea Layout Center Ereignisempfänger: public void actionperformed(actionevent evt) { String filename = namefield.gettext(); if (evt.getsource() == readfilebutton) { display.settext(""); readtextfile(display, filename); // Folie 32 } else writetextfile(display, filename); // Folie 30 } // actionperformed() Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester

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

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

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

Dynamische Datenstrukturen Jiri Spale, Algorithmen und Datenstrukturen - Dynamische Datenstrukturen 1

Dynamische Datenstrukturen Jiri Spale, Algorithmen und Datenstrukturen - Dynamische Datenstrukturen 1 Dynamische Datenstrukturen 2006 Jiri Spale, Algorithmen und Datenstrukturen - Dynamische Datenstrukturen 1 Dynamische Datenstrukturen Keine konstante Kardinalität Speicherzuweisung erfolgt während der

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

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

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

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

Problemstellung. Object1:Klasse1. Object2:Klasse2 att1: Klasse1 att2: 9. att1: att2: 17. Klasse1 att1 att2 Klasse2 att1 att2

Problemstellung. Object1:Klasse1. Object2:Klasse2 att1: Klasse1 att2: 9. att1: att2: 17. Klasse1 att1 att2 Klasse2 att1 att2 Problemstellung Objekt mit aggregierten Objekten: att1: att2: 17 Object1:Klasse1 Object2:Klasse2 att1: Klasse1 att2: 9 serialisiert als Datei: Klasse1 att1 att2 Klasse2 att1 att2 -Speicherung von Objekten

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

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

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

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

Java Input/Output System (IO)

Java Input/Output System (IO) Java Input/Output System (IO) Ziel: Schreiben und Lesen von Daten auf sequentielle Medien. Paket: java.io. ab Java 1.4 auch java.nio, hier nicht beru cksichtigt. Trennung in 2 Welten: - Byteorientierte

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

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

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

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

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

Dateien. DVG Dateien 1

Dateien. DVG Dateien 1 Dateien DVG2-05 - Dateien 1 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem JAVA-Programm her. Das Filesystem enthält als Objekte Devices, Verzeichnisse

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

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

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

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

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

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

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

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

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

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

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

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

Streams und Files. Streams und Files. Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung

Streams und Files. Streams und Files. Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung s und Files Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 s und Files Datenströme Byteweises

Mehr

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 313

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 313 Wo sind wir? Java-Umgebung Lexikale Konventionen Datentypen Kontrollstrukturen Ausdrücke Klassen, Pakete, Schnittstellen JVM Exceptions Java Klassenbibliotheken Ein-/Ausgabe Collections Threads Applets,

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

Einführung zur Aufgabengruppe 2

Einführung zur Aufgabengruppe 2 Einführung zur Aufgabengruppe 2 Alle Literaturhinweise beziehen sich auf die Vorlesung WS 10 Modellierung und Programmierung 1 1 Dateiverwaltung, das Stream-Konzept... 1-2 1.1 Datenströme (s. Kapitel Streams)...

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

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

Objektserialisierung

Objektserialisierung Objektserialisierung SEP 170 Serialisierung von Objekten Umwandlung des Objektzustandes in einen Strom von Bytes, aus dem eine Kopie des Objekts zurückgelesen werden kann. Serialisierung in Java einfacher

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

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 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

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

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

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

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

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

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I 13 Java-E/A-System 13.1. E/A-System-Überblick 13.2 Dateisystem - Betriebssystemsicht 13.3 Java-I/O-System 13.4 I/O-Klassenhierachie 13.5 InputStream class; Reader class 13.5.1 read() method 13.5.2 skip()

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

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

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I 13 Java-E/A-System 13.1. E/A-System-Überblick 13.2 Dateisystem - Betriebssystemsicht 13.3 Java-I/O-System 13.4 I/O-Klassenhierachie 13.5 InputStream class; Reader class 13.5.1 read() method 13.5.2 skip()

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

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

Einführung zur Aufgabengruppe 2

Einführung zur Aufgabengruppe 2 Einführung zur Aufgabengruppe 2 Alle Literaturhinweise beziehen sich auf die Vorlesung Modellierung und Programmierung 1 1 Dateiverwaltung, das -Konzept... 1-2 1.1 Datenströme (s. Kapitel s)... 1-2 1.1.1

Mehr

Informatik B. Vorlesung 14 Serialisierung, Autoboxing. Dr. Ralf Kunze

Informatik B. Vorlesung 14 Serialisierung, Autoboxing. Dr. Ralf Kunze Vorlesung 14 Serialisierung, Autoboxing 1 Serialisierung von Objekten Die Objekte innerhalb eines Java-Programmes sollen manchmal auch nach Beendigung der JVM verfügbar bleiben Objekte müssen ab und an

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

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

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

Streams und Files. Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung

Streams und Files. Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung Streams und Files Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Streams und Files Datenströme

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

5.2 Input/Output mit Dateien

5.2 Input/Output mit Dateien 252-0027 Einführung in die Programmierung 5.2 Input/Output mit Dateien Michael Faes & Thomas R. Gross Departement Informatik Manipulieren von Dateien Klasse File erlaubt Operationen mit Dateien (Files)

Mehr

Streams und Files. Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung

Streams und Files. Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung Streams und Files Datenströme Byteweises Lesen und Schreiben Zeichenweises Lesen und Schreiben Dateien Serialisierung Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer Streaming Quelle InputStream

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

Dateien/Streams. Arthur Zaczek

Dateien/Streams. Arthur Zaczek Dateien/Streams Arthur Zaczek Okt 2015 1/23 Input/Output Input/Output 2/23 Was ist ein Stream? Figure 1: InputStream Input/Output 3/23 Warum streamen? Reduktion des Speicherverbrauchs: es muss nicht der

Mehr

Grundlagen der Objektorientierten Programmierung - IO-Tools

Grundlagen der Objektorientierten Programmierung - IO-Tools Ein- und Ausgabe mit den IO-Tools Die nativen (eingebauten) Ein- und Ausgabefunktionen der Java-API sind zwar recht umfangreich und für viele Zwecke anpassbar - ihre Verwendung in einem Java- Programm

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

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

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

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I 13 Java-E/A-System 13.1. E/A-System-Überblick 13.2 Dateisystem - Betriebssystemsicht 13.3 Java-I/O-System 13.4 I/O-Klassenhierachie 13.5 InputStream class; Reader class 13.5.1 read() method 13.5.2 skip()

Mehr

Kapitel 9. Ein- und Ausgabe. 9.1 Ströme

Kapitel 9. Ein- und Ausgabe. 9.1 Ströme Kapitel 9 Ein- und Ausgabe In den bisherigen Programmbeispielen wurden die Benutzereingaben immer über die Kommandozeile und Ausgaben immer durch Aufruf der Methode System.out.println realisiert. Tatsächlich

Mehr

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für

Mehr

Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18)

Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18) Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18)

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

Mehr

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

Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien. Programmieren I. Martin Schultheiß Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 Dateien: Allgemeines 2 Dateien lesen 3 Beispiel: CSV-Daten 4 Filter 5 Ausgabe in Dateien Dateien: Allgemeines Kaum eine

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

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Java Teil 9: Ausnahmebehandlung Martin Hofmann Steffen Jost LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 8. Dezember

Mehr

Ausnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren

Ausnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren Ausnahmebehandlung Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren Ausnahmen abfangen Ausnahmen definieren Sinnvolle Verwendung von Ausnahmen Informatik II: Objektorientierte SW-Entwicklung, Algorithmik,

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

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II AG Praktische Informatik Technische Fakultät Vorlesung Sommer 2009 Teil I Ein- und Ausgabe In den bisherigen Programmbeispielen wurden die Benutzereingaben immer über

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Kapitel 8: Serialisierbarkeit

Kapitel 8: Serialisierbarkeit Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 8: Serialisierbarkeit Folie 189 : Serialisierbarkeit Die Umwandlung eines komplexen Objektes in ein Byte-Array nennt

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

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

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

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

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

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr