300 likes | 491 Views
Johann Wolfgang Goethe-Universität Professur für Graphische Datenverarbeitung Fachbereich Informatik und Mathematik Prof. Dr. Detlef Krömker . Einführung in die OOP in Java. WS 07/08. Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de. Dateien und Verzeichnisse.
E N D
Johann Wolfgang Goethe-Universität Professur für Graphische Datenverarbeitung Fachbereich Informatik und Mathematik Prof. Dr. Detlef Krömker Einführung in die OOP in Java WS 07/08 Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de Java-Intensivkurs WS07/08 Folie 1
Dateien und Verzeichnisse • Abstraktion von Dateien und Verzeichnissen: • java.io.File() • File-Objekt repräsentiert den Namen einer Datei bzw. eines Verzeichnisses • Datei bzw. Verzeichnis muss physikalisch nicht existieren • File: • Zahlreiche Methoden zur Navigation des Dateisystem & Manipulation von Dateien und Verzeichnissen Java-Intensivkurs WS07/08 Folie 2
Dateien und Verzeichnisse • Konstruktoren: • File(String pathName), File(String dir, String subPath) File(File dir, String subPath) • Erzeugt ein Objekt, das eine abstrakte Repräsentation der Datei oder des Verzeichnisses kapselt • Das Instanziieren • bedeutet nicht, dass die Datei bzw. das Verzeichnis angelegt wird • setzt die Existenz der Datei bzw. des Verzeichnisses nicht voraus • File-Objekt = abstrakte Beschreibung einer Datei oder eines Verzeichnisses Java-Intensivkurs WS07/08 Folie 3
Dateien und Verzeichnisse Java-Intensivkurs WS07/08 Folie 4
Dateien und Verzeichnisse Java-Intensivkurs WS07/08 Folie 5
Dateien und Verzeichnisse Java-Intensivkurs WS07/08 Folie 6
Dateien und Verzeichnisse Java-Intensivkurs WS07/08 Folie 7
Dateien und Verzeichnisse Java-Intensivkurs WS07/08 Folie 8
Dateien und Verzeichnisse Java-Intensivkurs WS07/08 Folie 9
Dateien und Verzeichnisse Java-Intensivkurs WS07/08 Folie 10
Dateien und Verzeichnisse Java-Intensivkurs WS07/08 Folie 11
Dateien und Verzeichnisse src Bankkonto.java InitializationDemo.java InitLocalVar.java io FileLister.java FileCopy.javamodifier2 ForeignClassesInDifferentPackage.java Java-Intensivkurs WS07/08 Folie 12
Wahlfreier Zugriff auf Dateien (RandomAccessFile) • java.io.RandomAccessFile • Mechanismus zum wahlfreien Zugriff auf Dateien • Datei: • Ein Array von Bytes, das an jeder beliebiger Stelle zugegriffen werden kann • Wahlfreier Zugriff: • Lesen und Schreiben an jeder Position innerhalb der Datei Java-Intensivkurs WS07/08 Folie 13
RandomAccessFile • Konstruktoren: • RandomAccessFile(String file, String mode) • RandomAccessFile(File file, String mode) • Mode: • „r“ : Datei nur zum Lesen öffnen • „rw“ : Datei nur zum Lesen und Schreiben öffnen • „rws“ • „rwd“ • Ein RandomAccessFile-Objekt • verfügt über einen Positionierungszeiger Java-Intensivkurs WS07/08 Folie 14
RandomAccessFile • Zeiger: • Wird zur Navigation innerhalb der Datei verwendet • Zeigt jedem Zeitpunkt auf eine Position innerhalb der Datei • Methoden • getFilePointer() • liefert die aktuelle Position des Zeigers • void seek(long position) • bewegt den Zeiger zur angegeben Position Java-Intensivkurs WS07/08 Folie 15
RandomAccessFile • skipBytes( int n ) : • bewegt Zeiger relativ zur aktuellen Position, um n Bytes • n negativ? • keine Bytes werden übersprungen • int read(): • liefert den Byte, auf den der Zeiger gerade zeigt als int-Wert zurück • int read(byte dest[]): • versucht so viele Bytes zu lesen, so dass das Array gefüllt wird • liefert die Anzahl der gelesenen Bytes bzw. -1, wenn der Zeiger auf das Ende der Datei zeigt Java-Intensivkurs WS07/08 Folie 16
RandomAccessFile • Alle Methoden erhöhen die Zeigerposition um die Anzahl der gelesenen Bytes • Zu jeder read-Methode existiert eine korrespondierende write-Methode • Alle o.g. Methoden werfen eine IOException Java-Intensivkurs WS07/08 Folie 17
RandomAccessFile Java-Intensivkurs WS07/08 Folie 18
RandomAccessFile Java-Intensivkurs WS07/08 Folie 19
RandomAccessFile Java-Intensivkurs WS07/08 Folie 20
Input- Output-Streams • Streams (Ströme) • Klassen, mit denen Dateien sequentiell gelesen und beschrieben werden • Ein Stream sieht eine Datei als: • Geordnete Folge von Bytes bzw. Zeichen, auf die er nur sequenziell zugreifen kann • Zwei Arten: • Input-Streams (Eingabeströme) • Zum Lesen • Output-Streams (Ausgabeströme) • Zum Schreiben Java-Intensivkurs WS07/08 Folie 21
Input- Output-Streams • Low-Level Streams (ByteStreams): • Lesen bzw. schreiben direkt in bzw. aus einer Datei • Lesen bzw. Schreiben nur Bytes • High-Level Streams (Charactrer-Streams) • Verwenden andere Low-Level-Streams zum Lesen und Schreiben • Können Zeichen und Daten primitiver Datentypen schreiben und lesen • Reader und Writer • Verwenden andere High-Level Streams zum Lesen und Schreiben • Können Zeichen und Daten primitiver Datentypen schreiben und lesen Java-Intensivkurs WS07/08 Folie 22
Low-Level-Streams (ByteStreams) • FileInputStream und FileOutputStream • Konstruktoren: • FileInputStream(String pathname) • FileInputStream(File file) • FileOutputStream(String pathname) • FileOutputStream(File file) Java-Intensivkurs WS07/08 Folie 23
Low-Level-Streams (ByteStreams) Java-Intensivkurs WS07/08 Folie 24
High-Level Streams • DataInputStream • DataOutputSteam Java-Intensivkurs WS07/08 Folie 25
Reader & Writer • FileReader Java-Intensivkurs WS07/08 Folie 26
BufferedReader • BufferedReader • Filter zur Pufferung von Eingaben • Höhere Performance beim Lesen von externen Dateien readLine(): • Liest eine komplette Textzeile und gibt sie als String zurück Java-Intensivkurs WS07/08 Folie 27
BufferedReader Java-Intensivkurs WS07/08 Folie 28
FileWriter • FileWriter: Java-Intensivkurs WS07/08 Folie 29
BufferedWriter Java-Intensivkurs WS07/08 Folie 30