Java-Intensivkurs WS07/08 Folie 1 Ashraf Abu Baker Johann Wolfgang Goethe-Universität Professur für Graphische Datenverarbeitung.

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.
Ein- und Ausgabe von Dateien
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Einführung in die Programmierung Ausführbare Klassen
Einführung in die Programmierung Zusammenfassung
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.
Java: Dynamische Datentypen
Indirekte Adressierung
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.
Objekte und Arbeitsspeicher
ARRAY oder FELD oder VEKTOR
Einführung in die OOP in Java
Zusammenfassung Vorwoche
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 Ausnahmen1 Ausnahmen. DVG Ausnahmen 2 Was sind Programmfehler? Programm erzielt gar kein Ergebnis. Berechnetes Ergebnis stimmt nicht.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
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.
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 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.
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,
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
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.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
CuP - Java Eingabe über Tastatur, AudioClips, überschreiben, Quiz Montag, 18. November 2002.
Optimale Ursprungsgerade
Programmiervorkurs WS 2014/15 Methoden
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
Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ Ausnahmen (Exceptions)
Einführung in die OOP in Java
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
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.
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
Konstruktoren.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Dynamisches Laden von Klassen
Cäsar-Verschlüsselung
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Cäsar-Verschlüsselung
«Delegierter» Methoden Schablone Funktionszeiger
Implementieren von Klassen
 Präsentation transkript:

Java-Intensivkurs WS07/08 Folie 1 Ashraf Abu Baker Johann Wolfgang Goethe-Universität Professur für Graphische Datenverarbeitung Fachbereich Informatik und Mathematik Prof. Dr. Detlef Krömker

Java-Intensivkurs WS07/08 Folie 2 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 3 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 4 Dateien und Verzeichnisse //absoluter Pfad eines Ordners (Windows-Syntax) File f=new File("c:\\daten"); //absoluter Pfad einer Datei (Windows-Syntax) File f2=new File("c:\\daten\\Veranstaltung.java"); //relativer Pfad einer Datei (Windows-Syntax) File f3=new File("..\\daten\\Veranstaltung.java"); //relativer Pfad eines Ordners (Unix-Syntax) File f4=new File("../beispiele"); //relativer Pfad eines Ordners (Unix-Syntax) File f4=new File("../../Sutdent.java");

Java-Intensivkurs WS07/08 Folie 5 Dateien und Verzeichnisse public String getName(): public String getAbsolutPath(): public boolean exist(): public long lastModified() public boolean isFile() public boolean isDirectory():

Java-Intensivkurs WS07/08 Folie 6 Dateien und Verzeichnisse public boolean mkdir(): public boolean delete(): public boolean renameTo(File dest): public String [] list():

Java-Intensivkurs WS07/08 Folie 7 Dateien und Verzeichnisse private static File d = new File("./");// realtiver Pfad eines Ordners System.out.println("Die Datei "+f.getName()+" befindet sich im Ordner: "+ d.getAbsolutePath()); System.out.println(f.getName()); System.out.println(f.getPath()); System.out.println(f.getAbsolutePath()); System.out.println(f.getParent()); System.out.println(f.exists()); System.out.println(f.canWrite());

Java-Intensivkurs WS07/08 Folie 8 Dateien und Verzeichnisse System.out.println(f.canRead()); System.out.println(f.isFile()); System.out.println(f.isDirectory()); System.out.println(f.lastModified()); System.out.println(f.length()); System.out.println(d.getName()); System.out.println(d.getPath());

Java-Intensivkurs WS07/08 Folie 9 Dateien und Verzeichnisse System.out.println(d.getAbsolutePath()); System.out.println(d.getParent()); System.out.println(d.exists()); System.out.println(d.canWrite()); System.out.println(d.canRead()); System.out.println(d.isFile()); System.out.println(d.isDirectory()); System.out.println(d.lastModified()); System.out.println(d.length());}}

Java-Intensivkurs WS07/08 Folie 10 Dateien und Verzeichnisse public class FileLister { public void listRec(File directory, int depth) { String[] list = directory.list(); for (String fileName : list) { for (int i = 0; i < depth; i++) System.out.print(" "); System.out.println(fileName); File child = new File(directory, fileName); if (child.isDirectory()) listRec(child, depth + 1); }

Java-Intensivkurs WS07/08 Folie 11 Dateien und Verzeichnisse // Das Programm erwartet den Namen eines existierenden Verzeichnisses public static void main(String[] args) { // Wenn das Programm nicht den Namen eines Verzeichnisses als Parameter übergeben bekommt, listet es den Inhalt des aktuellen Verzeichnisses String path = "./"; if (args.length > 0) path = args[0]; File f = new File(path); if (!f.isDirectory()) { System.out.println(path + " doesn't exist or not a dir."); System.exit(0);// Das Programm wird beendet } FileLister fl = new FileLister(); fl.listRec(new File(path), 0); }}

Java-Intensivkurs WS07/08 Folie 12 Dateien und Verzeichnisse src Bankkonto.java InitializationDemo.java InitLocalVar.java io FileLister.java FileCopy.java modifier2 ForeignClassesInDifferentPackage.java

Java-Intensivkurs WS07/08 Folie 13 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 14 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 15 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 16 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 17 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 18 RandomAccessFile public final boolean readBoolean() public final int readInt() public final char readChar() public final long readLong() public final byte readByte() public final double readDouble() public final float readFloat() public final short readShort() public final String readUTF() public final void writeBoolean() public final void writeInt(..) public final void writeChar(..) public final void writeLong(..) public final void writeByte(..) public final void writeDouble(..) public final void writeFloat(..) public final void writeShort(..) public final void writeUTF(..)

Java-Intensivkurs WS07/08 Folie 19 RandomAccessFile public void writeMySinature(String filename) { try { File file = new File(filename); RandomAccessFile randAccessFile = new RandomAccessFile(file, "rw"); // Seek to end of file randAccessFile.seek(file.length()); // Seek to end of file // Append to the end randAccessFile.writeBytes("\r\n/*Signed by: "+ System.getProperty("user.name") + " at "+ Calendar.getInstance().getTime().toString() + "*/"); randAccessFile.close(); } catch (IOException e) { System.out.println("Can't write "); }}

Java-Intensivkurs WS07/08 Folie 20 RandomAccessFile public static void main(String[] args) { RandomAccessFileApplication randAccessFileApp = new RandomAccessFileApplication(); randAccessFileApp.writeMySinature("src/io/RandomAccessF ileApplication.java"); }

Java-Intensivkurs WS07/08 Folie 21 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 22 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 23 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 24 Low-Level-Streams (ByteStreams) try { //Quell-Datei (path muss evtl. angepasst werden) FileInputStream in = new FileInputStream("src/io/FileCopy.java"); //Ziel-Datei (path muss evtl. angepasst werden) FileOutputStream out = new FileOutputStream("src/io/CopyOfFileCopy.java"); int len; while ((len = in.read()) > 0) { out.write( len); } out.close(); in.close(); } catch (IOException e) { System.err.println(e.toString()); }

Java-Intensivkurs WS07/08 Folie 25 High-Level Streams DataInputStream DataOutputSteam

Java-Intensivkurs WS07/08 Folie 26 Reader & Writer FileReader // Das Programm liest eine CSV-Datei zeichenweise, ersetzt jedes Semikolon durch ein Leerzeichen und gibt das Zeichen aus. FileReader f; int i; try { f = new FileReader("src/io/Studenten.csv"); while ((i = f.read()) != -1) { char c=(char) i; if ( c==';') c=' '; System.out.print(c); } f.close(); } catch (IOException e) { System.out.println("Error while writing in the file"); }

Java-Intensivkurs WS07/08 Folie 27 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 28 BufferedReader //LineCounter.java int lines=0; try{ BufferedReader bufferedReader = new BufferedReader(new FileReader( file)); String line=""; while((line = bufferedReader.readLine()) != null) lines++; File f=new File(file); System.out.println("Die Datei "+f.getAbsolutePath()+" enthält "+lines+" Zeilen!"); } catch (IOException e) { System.out.println("Can't read File"); } return lines;}

Java-Intensivkurs WS07/08 Folie 29 FileWriter FileWriter: //Das Programm erstellt eine CSV-Datei und fügt Studentendaten in sie ein try { String NEW_LINE="\r\n"; String firstLine = "Vorname;Nachname;Mat-Nr.;Semesteranzahl"+NEW_LINE; String student1 = "Markus1;Mustermann1;346572;5"+NEW_LINE; String student2 = "Markus2;Mustermann2; ;3"+NEW_LINE; String student3 = "Markus3;Mustermann3; ;4"+NEW_LINE; FileWriter f1; //Pfad muss evtl. angepasst werden f1 = new FileWriter("src/io/Studenten.csv"); f1.write(firstLine); f1.write(student1); f1.write(student2); f1.write(student3); f1.close(); } catch (IOException e) { System.out.println("Error while writing in the file"); }}

Java-Intensivkurs WS07/08 Folie 30 BufferedWriter //Das Programm fügt 15 Zeilen in eine Datei mittels eine BufferedReaders ein. try { int LINES=15; FileWriter fw = new FileWriter(args[0]); BufferedWriter bw = new BufferedWriter(fw); for(int i = 0; i < LINES; i++) { bw.write("Line " + i + "\r\n"); } bw.close(); } catch(Exception e) { System.out.println("Exception: " + e); }