8.06.1999, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS 1999 1 Ein- und Ausgabe in der Programmiersprache Java.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Präsentation PS: Klasse File von Janko Lange, Thomas Lung, Dennis Förster, Martin Hiller, Björn Schöbel.
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
DVG Dateien. DVG Die Klasse File Die Klasse File stellt die Verbindung zwischen dem File-System des Rechners und dem JAVA-Programm her.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Datenströme DVG Datenströme.
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Eine Entwicklungsumgebung im Web IFC-Seminar WS98/ Holger Otte.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Informatik 2 Typinformationen und Ein- und Ausgabe
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
Copyright 2007 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2007/08 Kapitel 10, Folie 1 2 Dr. Christian Herzog Technische.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Grundlagen der Informatik 1 Thema 20: Ströme und Ein-/Ausgabe in Java
Java für Fortgeschrittene
Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester Prof. Bernd Brügge, Ph.D Institut für Informatik Technische Universität.
Objektorientiertes Konstruieren
Variablenkonzept Klassisch, in Java Basistyp
Die Klasse String und ihre Methoden
Optimale Ursprungsgerade
Dateizugriffe mit Applikationen 2. Dateizugriffe mit Applets
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-AG Datenstreams: Dateibehandlung, Lesen aus und schreiben in eine Datei.
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Intensivkurs WS07/08 Folie 1 Ashraf Abu Baker Johann Wolfgang Goethe-Universität Professur für Graphische Datenverarbeitung.
Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ Ausnahmen (Exceptions)
Ein- und Ausgabe in Java Packet: java.io
OOP mit Java Oder: Java in 5 Tagen. 1. Tag Klassen und Methoden Hello World in Variationen Von Menschen und Geschlechtern Horden (Schlange stehen)
Java Programme nur ein bisschen objektorientiert.
Dr. Wolfram Amme, Generisches Programmieren, Informatik II, FSU Jena, SS Generisches Programmieren.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Exceptions in der Programmiersprache Java.
Ein-/ Ausgabe in Java ein Überblick. © eigentlich ganz einfach ? Ein-/Ausgabe durch package java.io Ausgabe (auf Konsole) mit System.out.println()
Java I/O Input / Output stream Library
Java I/O Input / Output stream Library
Konstruktoren.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Zwei Denkansätze zur Klasse Schlange
Aufgaben zu Rückgabewerten
Netzwerk - Programmierung
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
«Delegierter» Methoden Schablone Funktionszeiger
Implementieren von Klassen
 Präsentation transkript:

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Ein- und Ausgabe in der Programmiersprache Java

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Ein- und Ausgabe in Java Ein- und Ausgabe wird mit sogenannten Streams realisert Streams sind immer unidirektional Die Klasse java.io stellt verschiedene Klassen zur Verfügung die auf dem Streamkonzept basieren Schreiben Daten Stream Lesen

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Die abstrakte Klasse InputStream Die Klasse InputStream beschreibt allgemeine Methoden zum Lesen von Daten Methoden der Klasse InputStream read() liest ein Byte vom InputStream available() gibt die Anzahl an Bytes zurück, die gelesen werden können close() schließt den InputStream read(byte[]) liest soviele Bytes aus der Datei, wie ein Feld Elemente hat Methode read() ist abstrakt, und muß von allen Subklassen implementiert werden Standardeingabe von Java ist ein Beispiel eines InputStreams Klassenvariable in der Klasse System enthält eine Referenz auf eine Implementierung der Klasse InputStream

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Standardeingabe read() liefert einen Integerwert zurück, obwohl es nur ein Byte an Informationen enthält try { int val = System.in.read();... } catch ( IOException e ){ } überladene read()-Methode zum Füllen einer Reihung byte [] bity = new byte [1024]; int got = System.in.read( bity ); Abfrage der im InputStream enthaltenen Zeichen durch available() int waiting = System.in.available(); if(waiting > 0) { byte [] data = new byte [waiting]; System.read( data );...}

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Unterklassen der Klasse InputStream InputStream PipedInputStream FileInputStream FilterInputStream ByteArrayInputStream SequenceInputStream StringBufferInputStream DataInputStream BufferedInputStream LineNumberInputStream PushbackInputStream

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Die Klasse DataInputStream Mit Hilfe eines DataInputStreams können einfache Datentypen binär gelesen werden readBoolean(); readByte(); readChar(); readDouble(); readFloat(); readInt(); readLine(); readLong(); readShort(); Konstruktor erwartet einen InputStream als Parameter public DataInputStream(InputStream is);

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Die Klasse BufferedInputStream Daten werden blockweise in einen Puffer gelesen, auf dem bei jeder Leseaktion zugegriffen wird BufferedInputStream bis = new BufferedInputStream(mInputStream, 4096);... bis.read(); BufferedInputStream ermöglicht Daten zu lesen, ohne bei jeden Aufruf physikalisch auf das Gerät zuzugreifen BufferedInputStream enthält die Methoden mark() zum markieren einer Position im Puffer reset() zur Zurückführung des Pufferzegers auf die letzte Markierung

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Beispiel import java..io.*; public class firstIO{ public static void main(String [] args){ int value; try { DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream( ´´intData´´ ))); value = in. readInt(); System.out.println(value); } catch( IOException e){ System.err.println(e); } }

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Die abstrakte Klasse OutputStream Die Klasse OutputStream beschreibt allgemeine Methoden zum Schreiben von Daten. Methoden der Klasse: write(int) schreibt ein Byte auf den Stream write(byte[]) schreibt ein Feld von Bytes auf den Stream flush() schreibt gepufferte Daten, falls Puffer genutzt werden close() schließt den OutputStream Die Methode write() ist abstrakt und muß deshalb von allen Subklassen implementiert werden Standardausgabe und Standardfehlerausgabe sind Beispiele eines OutputStreams Klassenvariablen out und err der Klasse System enthalten eine Referenz auf eine Implementierung der Klasse OutputStream

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Unterklassen der Klasse OutputStream PipedOutputStream FileOutputStream FilterOutputStream ByteArrayOutputStream DataOutputStream BufferedOutputStream LineNumberOutputStream PushbackOutputStream OutputStream PrintStream

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Die Klasse PrintStream überladene print() bzw. println()-Methode, die Argumente in eine Zeichenkette umwandelt und dann auf dem Stream ausgibt Standard- und Standardfehlerausgabe von Java ist ein Beispiel eines PrintStreams Klassenvariablen out und err der Klasse System enthalten eine Referenz auf ein Objekt der Klasse PrintStream System.out.print(´´Hello world...\n´´); System.out.println(´´Hello world...´´); System.out.println(´´The answer is ´´ + 17); Methoden der Klasse PrintStream lösen keine IOException aus System.out.println(reallyLongString); if( System.out.checkError() );

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Die Klasse BufferedOutputStream Daten werden in einen Puffer geschrieben, dessen Inhalt nur dann in den Stream geschrieben wird, wenn er voll ist BufferedOutputStream bos = new BufferedOutputStream(myOutputStream 4096);... bis.write(); BufferedOutputStream ermöglicht Daten zu schreiben, ohne bei jeden Aufruf physikalisch auf das Gerät zuzugreifen explizites Leeren des Puffers mit flush()

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Die Klasse DataOutputStream Mit Hilfe eines DataOutputStreams können einfache Datentypen binär geschrieben werden writeBoolean(); writeByte(); writeChar(); writeDouble(); writeFloat(); writeInt(); writeLine(); writeLong(); writeShort(); Konstruktor erwartet einen Outputstream als Parameter public DataOutputStream(OutputStream is);

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Pipelines Mit den Klassen PipedInputStream und PipedOutputStream können zwei gegensätzliche Streams verbunden werden PipedInputStream pin = new PipedInputStream(); PipedOutputStream pout = new PipedOutputStream(pin); pin.read(); pout.write(); Pipelines werden von Threads zur Kommunikation verwendet Threads können mit write() und read() auf die Pipeline zugreifen Schreibversuch auf einen vollen Puffer => der ´´schreibende´´ Thread wird in den ´´wartenden´´ Zustand geführt Leseversuch auf einen leeren Puffer => der ´´lesende´´ Thread wird in den ´´wartenden´´ Zustand geführt

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Die Klassen StringReader und StringWriter Die Klasse StringReader erlaubt uns eine Zeichenketten als Stream zu behandeln String data = ´´There once was a man from Nantucket...´´; StringReader sr = new StringReader( data ); char T = (char)sr.read(); char h = (char)sr.read(); char e = (char)sr.read(); Die Klasse StringWriter erlaubt uns eine Zeichenkette über ein Stream zu erzeugen StringWriter buffer = new StringWriter(); PrintWriter out = new PrintWriter( buffer ); out.println(´´A moose once bit my sister.´´ ); out.println(´´No, really!´´); String results = buffer.toString();

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Die Klasse File Objekt-File wird zur Abfrage von Informationen genutzt Die Klasse File enthält Methoden Auflisten von Dateien und Verzeichnissen Prüfen, ob eine Datei existiert/lesbar/ schreibbar Umbenennen und Löschen von Dateien bzw. Verzeichnissen Anwendung von Methoden der Klasse File File fooFile = new File(´´/tmp/boofa´´); String type = fooFile.isFile() ? ´´File´´ : ´´Directory´´; String name = fooFile.getName; long len = fooFile.length(); System.out.println(type + name ´´,´´ + len + ´´bytes´´); Die Klasse File enthält eine Methode zum Anlegen von Verzeichnissen, nicht aber von Dateien

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Methoden der Klasse File boolean canRead() - testet, ob die Datei lesbar ist boolean canWrite() - testet, ob die Datei beschreibbar ist boolean delete() - löscht die Datei (bzw. das Verzeichnis) boolean exists() - testet, ob die Datei existiert boolean renameTO(File) - benennt die Datei um boolean mkdir() - erzeugt ein Verzeichnis boolean mkdirs() - erzeugt einen Verzeichnisbaum String [] list() - liefert eine Liste von Dateien des Verzeichnisses String getAbsolutePath(), String getPath() - liefert den entsprechenden Pfad der durch File beschriebenen Datei zurück String getname() - gibt den Namen der Datei zurück boolean isFile(), boolean isDirectory() - Rückgabe der Dateiart

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Lesen- und Schreiben von Dateien Die Klassen FileInputStream und FileOutputStream enthalten Methoden zum Lesen und Schreiben von Dateien FileInputStream bzw. FileOutputStream erweitern die Klassen InputStream bzw. OutputStream Anlegen eines FileInputStreams FileInputStream fools = new FileInputStream( fooFile ); FileInputStream fools = new FileInputStream( ´´/etc/passwd´´ ); Anlegen eines FileOutputStreams FileOutputStream fools = new FileOutputStream( fooFile,true ); FileOutputStream fools = new FileOutputStream( ´´/etc/passwd´´,true ); FileInputStream und FileOutputStream können in höhere Ein- und Ausgabestreams gepackt werden

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Beispiel File file = new File( args[0]); if(!file.exists() || !file.canRead()) { System.out.println(´´Kann Datei ´´ + file + ´´ nicht lesen!´´); return; } if( file.isDirectory() ) { String [] files = file.list(); for(int i = 0; i < files.length; i++) System.out.println( files[i] ); } else { try{ FileReader fr = new FileReader( file ); BufferedReader in = new BufferedReader( fr ); String line; while( line = in.readLine() != null ) System.out.println( line ); } catch( FileNotFoundException e){ System.out.println( ´´Fehler´´); }

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Die Klasse RandomAccessFile Klasse RandomAccessFile enthält Methoden mit der auf Dateien an beliebigen Stellen zugegriffen werden kann RandomAccessFile implementiert sowohl DataInput als auch DataOutput Anlegen eines RandomAccessFiles try { RandomAcessFile users = RandomAccessFile( ´´Users´´,´´rw´´);... } catch( IOException e ){ } automatisches Anlegen einer Datei, wenn RandomAccessFiles als schreibend definiert ist seek(), getFilePointer() und length() zur Steuerung von RandomAccessFiles