Java-AG Datenstreams: Dateibehandlung, Lesen aus und schreiben in eine Datei.

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.
1 Spezielle Packages des Java SDK (1.4) java.nio.
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
Listen Richard Göbel.
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Referenzen und Zeichenketten
Dateien. Eine Datei wird in C++ als ein Stream, also als ein Objekt einer bestimmten Klasse dargestellt.
Konstruktoren.
Objekte und Arbeitsspeicher
ARRAY oder FELD oder VEKTOR
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Java-AG Ausnahmebehandlung Gerhard Gröger.
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.
Zusammenfassung Vorwoche
Packages Vortrag : Cornelia Hardt 23. November 1999.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
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.
JDBC EDV JDBC.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
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,
Socket-Programmierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Copyright 2007 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2007/08 Kapitel 10, Folie 1 2 Dr. Christian Herzog Technische.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Grundlagen der Informatik 1 Thema 20: Ströme und Ein-/Ausgabe in Java
Java für Fortgeschrittene
FORTRAN 77.
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.
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Variablenkonzept Klassisch, in Java Basistyp
Optimale Ursprungsgerade
Variablen in Programmiersprachen
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
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.
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)
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Java-Kurs Übung Besprechung der Hausaufgabe
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 12. Vorlesung WS 2001/2002.
Ein- und Ausgabe in Java Packet: java.io
Variablen und Datentypen
28/07/2015Walther-Rathenau- Gewerbeschule 1 Zeichenketten (Strings)
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.
Tutorium Software-Engineering SS14 Florian Manghofer.
Import java.util.*; Hilfsklassen, die man eigentlich immer braucht.
Ein-/ Ausgabe in Java ein Überblick. © eigentlich ganz einfach ? Ein-/Ausgabe durch package java.io Ausgabe (auf Konsole) mit System.out.println()
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Ein- und Ausgabe in der Programmiersprache Java.
Java I/O Input / Output stream Library
Java I/O Input / Output stream Library
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Felder in der Informatik
 Präsentation transkript:

Java-AG Datenstreams: Dateibehandlung, Lesen aus und schreiben in eine Datei

Übersicht Was sind Datenstreams? Lesen von Daten Schreiben von Daten Rückblick „Fehlerbehandlung“

Was sind Datenstreams? Kommunikationpfad zwischen Quelle und Ziel eines Informationsblocks Informationsblock selbst bleibt zunächst uninterpretiert, daher beliebige Zeichenfolge möglich Einfachstes Beispiel: Array im Speicher Wichtigste Anwendung: Zugriff auf Dateien

Verwendung von Datenstreams alle Klassen (sowohl zum Lesen als auch zum Schreiben von Daten) benötigen das Paket java.io ; es sollte daher am Anfang des Programms importiert werden: import java.io.*;

Verwendung von Datenstreams wenn Dateien über das Internet angesprochen werden sollen, wird die Klasse URL benötigt, sie liegt im Paket java.net, das gegebenenfalls importiert importiert werden muß: import java.net.*;

Lesen von Dateien Generell erfolgt das Lesen von Byte- Streams durch zwei abstrakte Klassen: Reader und InputStream Methoden bei Reader und InputStream im wesentlichen gleich

Methoden zum Lesen von Dateien InputStream liefert eine Folge von Bytes (byte), dabei liegt der Zeichencode „Unicode“ (16 bit pro Zeichen) zugrunde Reader liest eine Folge von Zeichen (char), hierbei wird der Zeichensatz des Rechnersystems genutzt (z.B. ISO in Westeuropa)

Methoden zum Lesen von Dateien wichtigste Methode zum Lesen: read () Parameter: Ziel, Offset, Länge r.read(cbuffer, 100, 200); liest aus dem Objekt cbuffer die Zeichen 100 bis 299

Weitere Methoden zum Lesen von Dateien Überspringen von Zeichen: skip (long) Status des Datenstreams abfragen: ready () Länge des Streams bestimmen: available ()

Weitere Methoden zum Lesen von Dateien Nach Ende des Lesevorgangs Stream schließen, um die Nutzung der Quelle durch andere Ressourcen zu ermöglichen: close ()

Lesen aus einem Array Zu verwendende Variante abhängig vom gewünschten Datentyp: ByteArrayInputStream () CharArrayReader ()

BufferedInputStream Steigerung der Effizienz durch Vermeidung unnötiges Hardware-Zugriffe: new BufferedInputStream (Ziel) für einen Puffer mit Standardgröße mit (Ziel, int) kann die Größe des Puffers angepaßt werden

Spezielle Input-Streams Lesen von Daten aus binären Datenfiles: new DataInputStream (Ziel) Interessant: die speziellen Methoden boolean readBoolean(), byte readByte(), float readFloat(), usw.

ObjectInputStream Lesen von Objekten mit ObjectInputStream Methoden analog zu DataInputStream, zusätzlich Object readObject() für Objekte Diese müssen allerdings in den richtigen Typ umgewandelt werden, z.B. d = (Date) in.readObject();

Lesen vom Web-Server Zugriff durch Klasse URL: URL url; try { url = new url („http....“); in =new BufferedInputStream (url.openStream() );....} catch...

OutputStream Öffnen des OutputStreams : new FileOutputStream (filename, true/false); zusätzliche Option Appendmode ( true/false ) ab JDK 1.1, wobei false eine neue Datei erzeugt und true die Informationen an eine bereits existierende Datei anhängt

Methoden des OutputStreams write(int); schreibt ein Byte mit angegebenem Wert write(byte[]); write(byte[], offset, length); schreibt alle im byte -Array bzw. im Teilbereich des byte -Array enthaltenen Bytes

Methoden des OutputStreams flush() sorgt dafür, daß alle eventuell noch im Puffer wartenden Bytes tatsächlich in die Datei geschrieben werden Sollte immer vor close() oder einem Abbruch des Programms aufgerufen werden

Spezielle OutputStreams BufferedOutputStream (Ziel) funktioniert analog zu BufferedInputStream. Auch hier ist die Angabe der Puffergröße als int möglich.

Spezielle OutputStreams DataOutputStream (Ziel) zum Schreiben von binären Datenfiles Plattformunabhängig Daten für DataInputStream nutzbar Methoden: writeBoolean(boolean); writeByte(int); writeBytes(String); etc.

Spezielle OutputStreams ObjectOutputStream (Ziel) wie DataOutputStream, zusätzlich writeObject(Object) Auch hier: Object ist Superklasse für alle Klassen, Object kann also beliebig sein Bsp: Date d;... Out.writeObject(d);

Writer Analog zu FileReader, BufferedReader, und InputStreamReader existieren FileWriter, BufferedWriter und OutputStreamWriter PrintWriter enthält zusätzlich Methoden zur Umwandlung von Zahlen und Objekten für print und println

RandomAccessFile RandomAccessFiles erlauben neben den üblichen Stream-Methoden (read, write, flush, close) auch das „Springen“ an bestimmte Stellen innerhalb des Files.

RandomAccessFile long getFilePoint() liefert die aktuelle Position während des Lesens/Schreibens innerhalb des Files long lenght() Liefert die Länge des Files seek (long) setzt den FilePointer auf eine bestimmte Stelle für das nächste read oder write

Exceptions alle Fehler bei Dateizugriffen sollten mit try {...} catch {...} finally {Streamname.close()} abgefangen werden, um Probleme bei späteren Dateizugriffen zu vermeiden

EOFException Fast alle read -Methoden werfen am Ende des Files ein EOFException aus: try { while (true) {..Streamname.read..} catch {EOFException e} finally {Streamname.close()}

Exceptions auch beim Erzeugen des Datenstreams sollte man auf Nummer sicher gehen: Reader r = tryToMakeNewReader (); if (r != null) try {...} catch {...} finally {r.close()}

Aufgabe Schreibt ein kurzes Programm, daß die Datei index.html im Verzeichnis /HOWTO/HOWTO-INDEX auf dem HTTP-Server einliest.

Lösung Zunächst werden die Pakete importiert: import java.io.*; import java.net.*; Danach werden die Variablen deklariert: URL url; RandomAccessFile einlesen;

Lösung (2) In der äußeren TRY/CATCH-Anweisung wird die Zieladresse geöffnet: try { url = new url(„ linuxdoc.org/HOWTO/HOWTO- INDEX/index.html“); Dann wird der Datenstrom geöffnet: einlesen = new RandomAccessFile(url.openStream() );

Lösung (3) Die innere TRY/CATCH-Anweisung schützt den eigentlichen Lese-Vorgang: try { while (true){einlesen.read()} } Fehler werden abgefangen, in jedem Fall wird der Lese-Vorgang abgeschlossen: catch (EOFException e) { System.out.println("error "+e) } finally {einlesen.close()} }

Lösung (4) Jetzt wird noch die äußere CATCH-Anweisung ausgewertet und zu Ende gebracht: catch (Exception e) { System.out.println("error "+e); } Und der Datenstrom geschlossen: finally {url.closestream()};