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

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

Java Input/Output System (IO)

Datenströme in Java. Zeichenkonvertierung

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

Umleitung von Datenströmen

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

Java Einführung IO (Eingabe/Ausgabe)

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

Einführung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 14: Sequentielle Ein-/Ausgabe, Streams, Dateiorganisation.

Dateien. DVG Dateien 1

Vorlesung Programmieren

Java Fehlerbehandlung

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

Einführung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 14: Sequentielle Ein-/Ausgabe, Ströme, Dateiorganisation.

Socket-Programmierung unter Java

Programmieren I. Kapitel 15. Ein und Ausgabe

Java Schulung (Java 2 Java Development Kit 5 / 6)

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

Client-Server TCP/IP - Kodierung

Socket-Programmierung unter Java

Programmieren 2 09 File-IO

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

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

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

Handbuch konsultieren!

Programmieren in Java

Verteilte Systeme - Java Networking (Sockets) -

Javakurs für Fortgeschrittene

Javakurs für Fortgeschrittene

Java I/O, Serialisierung und Netzwerkprogrammierung

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

Streams. Programmiermethodik. Eva Zangerle Universität Innsbruck

Einführung in die Informatik Algorithmen und Datenstrukturen. Thema 12 Datenverarbeitung

Software Entwicklung 1

Java Schulung. Objektorientierte Programmierung in Java Teil VI: Wichtige Java Pakete. Prof. Dr. Nikolaus Wulff

Javakurs für Fortgeschrittene

Modellierung und Programmierung 1

Programmieren 2 Selbststudium Semesterwoche 6

Client-Server TCP/IP - Kodierung

Programmieren in Java

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

Telecooperation/RBG. Grundlagen der Informatik 1 Thema 20: Ströme und Ein-/Ausgabe in Java. Dr. Guido Rößling

Ein- und Ausgabe. Für die Ein- und Ausgabe von Daten gibt es eine Reihe von Möglichkeiten. Beispiele hierfür sind:

Grundlegende Java Bibliotheken

Grundlagen zu Streams

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

Ein- und Ausgabe in Java

Programmieren I und II

Elisabeth Jung. Java 6 Das Übungsbuch Band II

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

Transkript:

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 von Daten Grundlage fast aller Programme Auch: E/A (Eingabe/Ausgabe), I/O oder IO (Input/Output) Quelle und Ziel von Daten Dateien auf der Festplatte Ressourcen auf entfernten Rechnern (Webseite, Bild,...) Geräte (Drucker, Bildschirm, Serielle Schnittstelle, USB,...) Andere Programme Speicherbereiche 3 1

Dateien und Verzeichnisse Java stellt im package java.io Klassen für I/O bereit Dateien und Verzeichnisse: java.io.file Plattformübergreifende Abstraktion Problem der Darstellung von Pfaden Windows: c:\windows\system32\defrag.exe Unix: /usr/share/bug/tetex-bin/script Problem mit Laufwerksbuchstaben Unix kennt keine Laufwerke, nur / als Wurzelverzeichnis Windows nutzt Laufwerke statt Mountpoints 4 Die Klasse File Instanzen der Klasse File repräsentieren einen Speicherort Muss nicht physikalisch existieren Beispiele File f = new File( datei.txt ); //Datei datei.txt im aktuellen Verzeichnis File f = new File(../dir2 ); //Relative Pfadangaben Beispiele unter Windows File f = new File( c:\\windows ); //Achtung: Doppelbackslash File f = new File( c:/windows ); //Alternative: Forwardslash Beispiele unter Unix File f = new File( datei.txt ); //Datei datei.txt im aktuellen Verzeichnis File f = new File( /home/pfisterer/datei.txt ); //Absolute Angabe File f = new File( /dev/sda1 ); //Inhalt der Festplatte 5 Plattformabhängigkeit der Pfadangabe Angabe von Pfaden ist plattformabhängig Besonders Laufwerke und Pfadtrenner sind problematisch Pfadtrenner auf aktuellem System ist abfragbar File.separatorChar (Typ char), File.separator (Typ String) Alternativ: System.getProperty("file.separator ) Beispiel Ausgabe (Windows): 6 2

Darstellung von Pfaden String getname() Gibt den Dateinamen zurück String getpath() Gibt den Pfadnamen zurück String getabsolutepath(), File getabsolutefile() Liefert absoluten Pfad Besteht aus aktuellem Verzeichnis, Separator-Zeichen und Dateinamen String getcanonicalpath (), File getcanonicalfile() throws IOException Liefert eindeutigen, absoluten Pfad zurück (z.b. Entfernung von.. und.) Kann IOException werfen, da mitunter verbotene Dateizugriffe erfolgen boolean isabsolute() true, wenn der Pfad in der systemabhängigen Notation absolut ist 7 Laufwerke 8 Zugriff auf Laufwerke in Java Statische Methode java.io.file.listroots() listet Laufwerke Windows: alle Laufwerke, Unix: nur Rootverzeichnis / Nicht alle Roots müssen verfügbar sein (z.b. CD-Laufwerke) 9 3

Ermittlung des Speicherplatzes 10 Durchwandern von Verzeichnissen Ausgehend von einem Pfad Zum übergeordneten Verzeichnis wechseln Den Inhalt des Pfades ausgeben 11 Ermitteln des Typs einer File-Instanz Kann Verzeichnis oder Datei repräsentieren isdirectory prüft, ob es ein Verzeichnis ist isfile prüft, ob es eine Datei ist ishidden prüft, ob die Datei versteckt ist 12 4

Beispiel: Rekursives Auflisten 13 Sonstige (wichtige) Methoden 14 Ein- und Ausgabe in Java 5

I/O-Abstraktion in Java Sogenannte Streams (Ströme) von Daten Trennung von Input und Output Streams Sammlung von Klassen zum IO in java.io.* 16 Inhalt von Streams Streams unterstützen Bytes, primitive Datentypen, (lokalisierte) Zeichen, Objekte Für Programm ist ein Strom ein simples Konzept Sequenz von Daten Lesen und Schreiben immer Stück für Stück 17 Ein- und Ausgabe in Java Java abstrahiert von der eigentlichen Datenquelle Zwei grundlegende Konzepte Lesen von Bytes oder lesen von Zeichen Für byte-orientiertes I/O: *Stream Für zeichen-orientiertes I/O: *Reader / *Writer Beispiel für Dateien Bytes (oder Byte-Arrays) Lesen aus Datei FileInputStream FileReader Schreiben in Datei FileOutputStream FileWriter Zeichen (oder Zeichen-Arrays, Strings) 18 6

Beispiel: Lesen einer Datei Aufgabe: Ausgeben des Inhaltes einer Datei Spezielle Klasse zum Lesen einer Datei: FileInputStream read() liest jeweils ein Zeichen Liefert je ein Zeichen (-1 wenn die Datei fertig gelesen ist) 19 Beispiel: Lesen einer Datei in byte-array Lese Datei in byte[] Erstelle Histogramm der Buchstabenh äufigkeit 20 Beispiel: Schreiben in (Text-)Datei 21 7

Ein- und Ausgabe in Java: InputStream 22 Ein- und Ausgabe in Java: OutputStream 23 Ein- und Ausgabe in Java: Reader 24 8

Ein- und Ausgabe in Java: Writer 25 Klassen für die Eingabe Byte-Streams Zeichen-Streams Beschreibung InputStream Reader Abstrakte Klasse für Zeicheneingabe und Byte-Arrays BufferedInputStream BufferedReader Puffert die Eingabe LineNumberInputStream LineNumberReader Merkt sich Zeilennummern beim Lesen ByteArrayInputStream CharArrayReader Liest Zeichen-Arrays oder Byte-Arrays (keine Entsprechung) InputStreamReader Wandelt einen Byte-Stream in einen Zeichen-Stream um. Bindeglied zwischen Byte und Zeichen. DataInputStream (keine Entsprechung) Liest Primitive und auch UTF-8 FilterInputStream FilterReader Abstrakte Klasse für gefilterte Eingabe 26 Klassen für die Ausgabe Byte-Streams Zeichen-Streams Beschreibung OutputStream Writer Abstrakte Klasse für Zeichenausgabe oder Byte- Ausgabe BufferedOutputStream BufferedWriter ByteArrayOutputStream CharArrayWriter Schreibt in Arrays Ausgabe des Puffers, nutzt passendes Zeilenendezeichen DataOutputStream (keine Entsprechung) Schreibt Primitive und auch UTF-8 (keine Entsprechung) OutputStreamWriter Übersetzt Zeichen-Streams in Byte-Streams FileOutputStream FileWriter Schreibt in eine Datei PrintStream PrintWriter Konvertiert primitive Datentypen in Strings und schreibt sie in einen Ausgabestrom PipedOutputStream PipedWriter Schreibt in eine Pipe (keine Entsprechung) StringWriter Schreibt in einen String 27 9

Beispiel: BufferedInputStream 28 Beispiel: BufferedReader 29 Beispiel: Internet-Streams Aufgabe: Lesen einer Seite im Internet via http 30 10

Guter Stil Methoden sollten immer das generischste Interface akzeptieren z.b. InputStream, OutputStream, Writer, Reader Damit können sie maximal flexibel genutzt werden Security - 04 Cryptology #31 Verbesserte Variante Security - 04 Cryptology #32 Weitere Informationen http://java.sun.com/javase/7/docs/api/ http://openbook.galileocomputing.de/javainsel8/ http://java.sun.com/docs/books/tutorial/essential/io/ 33 11