Grundlagen der Programmierung

Ähnliche Dokumente
Programmieren in Java

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Java Fehlerbehandlung

Programmieren 2 Selbststudium Semesterwoche 6

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

Programmieren in Java

Vorlesung Programmieren

Ein- und Ausgabe in Java

Programmieren I. Dateien: Allgemeines. Vorlesung 10. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

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

Programmieren I. Kapitel 15. Ein und Ausgabe

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

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

Exceptions: Parameterprüfung import java.io.ioexception;

Software Entwicklung 1

3. Grundlegende Sprachkonstruktionen imperativer Programme

Dr. Monika Meiler. Inhalt

Java-Schulung Grundlagen

Einführung in Javadoc

Java Input/Output System (IO)

Einführung in die Informatik Files and Streams

Angewandte IT-Sicherheit

Einstieg in die Informatik mit Java

Distributed Computing Group

Die elementare Ausgabe von Daten auf externe Medien, wie Dateien und das Einlesen davon wird demonstriert.

Der Datentyp String. Stringvariable und -vergleiche

Prof.Dr. Alfred Irber Dies ist keine Musterprüfung, sondern eine Sammlung von Aufgaben aus früheren Prüfungen "Programmieren"

Programmieren I und II

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

Javakurs zu Informatik I. Henning Heitkötter

Java I Vorlesung Exceptions

Arbeiten mit der Shell Teil 1

Zeichen. Datentyp char. char ch = 'x'; Page 1. Zeichen braucht man zur Verarbeitung von Texten, Namen, Bezeichnungen. Zeichencodes

Javakurs für Anfänger

Programmieren 2 09 File-IO

Probeklausur: Programmierung WS04/05

Tutorium Java Ein Überblick. Helge Janicke

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Programmierkurs Java

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Primitive Datentypen

Java: Vererbung. Teil 3: super()

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Referat: Netzwerkprogrammierung in Java

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

von Anja Austermann Drag and Drop

Programmieren in Java

Liebe Leserin, lieber Leser, in der ersten Auflage von Programmieren lernen mit Java von Hans- Peter Habelitz sind einige Fehler zu korrigieren.

Ein- und Ausgabe mit Java

Allgemeine Informatik II SS :30-13:30 Uhr

Javakurs für Anfänger

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

Visual C# 2008 Kochbuch

1 Polymorphie (Vielgestaltigkeit)

Einführung zur Aufgabengruppe 2

Informatik B von Adrian Neumann

PIWIN 1 Übung Blatt 5

Übungen zur Vorlesung Wissenschaftliches Rechnen I

Programmieren II. Timer. Vorlesung 11. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester Timer. Sockets.

Arbeiten mit der Shell Teil 1

Einführung in die Programmierung 1

Die Bibliothek SysLibFile.lib

PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes

Java I/O, Serialisierung und Netzwerkprogrammierung

Programmieren in Java

6 Ein- und Ausgabe. Bisher war unsere (Bildschirm-) Ausgabe leichtflüchtig (

Programmdokumentation

Arbeiten mit der Shell Teil 1

Repetitorium Informatik (Java)

Zusatzinformation zum USB-Flashdrive mit ARM und RS232

Einführung in die Informatik

Tipps und Hinweise zum Bezug der Beitragssatzdatei V5.0

Programmieren I + II Regeln der Code-Formatierung

Objektorientierte Programmierung Einstufungstest

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Übung zur Vorlesung Strukturiertes Programmieren WS 2014/15. Übungsblatt 1: JAVA - Erste Schritte Abgabe: Besprechung:

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

Musterlösung zum 8. Aufgabenblatt vom Dienstag, den 02. Juni 2009 zur Vorlesung. Informatik B. von Jacob Krause

Grundlagen der Programmierung

Vorlesung Informatik II

Große Übung Praktische Informatik 1

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Studentische Lösung zum Übungsblatt Nr. 7

Hochschule Augsburg, Fakultät für Informatik Name:... Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6

3 Objektorientierte Konzepte in Java

Programmieren in Java

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Datenbankanwendungsprogrammierung Crashkurs Java

15 Ein-/Ausgabe Kommunikation. Dateien. Schreiben und Lesen von Dateien. Sockets. Übungsaufgaben

Software Engineering Klassendiagramme Einführung

4 Schleifen und Dateien

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

Modellierung und Programmierung 1

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Einstieg in die Informatik mit Java

Algorithmen und Programmierung II

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

Transkript:

Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind ausgewählte Teile direkt aus der Vorlesung von Prof. Dr. Faustmann (ebenfalls HWR Berlin) übernommen worden. Für die Bereitstellung dieses Vorlesungsmaterials möchte ich mich an dieser Stelle noch einmal recht herzlich bedanken. 18.12.2011 Prof. Dr. Andreas Schmietendorf 1

Arbeiten mit Files 18.12.2011 Prof. Dr. Andreas Schmietendorf 2

Arbeiten mit Files Eine Datei ist eine geordnete Menge von Datensätzen, die einen gemeinsamen Sachbezug haben. So kennen wir beispielsweise Personaldateien, Kundendateien, Lieferdateien, aber auch Java- Files bzw. JAR-Files. Anstatt der Bezeichnung Datei verwendet man heutzutage nahezu ausschließlich den Begriff File. Die Speicherungsform einer Datei wird fast ausschließlich für externe Speicher verwendet. Damit ist ein relativ kleiner Speicher- bzw. Zugriffsbereich erforderlich und zwar die Länge des Datensatzes. Speziell können auch so genannte Pufferungstechniken zur Anwendung kommen. Quelle: Dumke, R.: Java-Tutorial, Otto-von-Guericke-Universität Magdeburg, Fakultät für Informatik Institut für Verteilte Systeme, AG Softwaretechnik 18.12.2011 Prof. Dr. Andreas Schmietendorf 3

Arbeiten mit Files name.java: Java-Quelltext, name.class: vorübersetzte Java-Klassendatei, name.html: HTML-Datei, name.gif: Bilddatei, name.pas: Pascal-Quellcode, name.ppt: PowerPoint-File, name.zip: verdichtete Datei, name.tar: verdichtete Workstation-Datei, name.doc: MS WORD-File. Quelle: Dumke, R.: Java-Tutorial, Otto-von-Guericke-Universität Magdeburg, Fakultät für Informatik Institut für Verteilte Systeme, AG Softwaretechnik 18.12.2011 Prof. Dr. Andreas Schmietendorf 4

Arbeiten mit Files Klasse File: Ein Objekt (Instanz) aus der Klasse java.io.file stellt: - eine einzelne Datei oder - einen Verzeichnispfad dar. Zielstellung der abstrakten Klasse File: - Angebot an Operationen auf Dateien - Kapselung maschinenspezifischer Eigenschaften Konstruktoren der Klasse File - public File(String pathname) - public File(String parent, String child) - Public File(File parent, String child) relativer Pfad 18.12.2011 Prof. Dr. Andreas Schmietendorf 5

Arbeiten mit Files Verwendung der Konstruktoren der Klasse File : Angabe von Dateien erfolgt entsprechend dem genutzten OS Gültige Konstruktoren der Klasse File - File f = new File( Testfile.java ); - File f = new File(., Testfile.java ); - File f = new File( c:\\config.sys ); - File fi = new File("c:\\dateien"); Verwendung des doppelten Backslash da der einfache Backslash (\) als Steuerzeichen verwendet wird! 18.12.2011 Prof. Dr. Andreas Schmietendorf 6

Arbeiten mit Files Zunächst können von einem File-Objekt die Bestandteile des Dateinamens gelesen werden: - String getname() Name der Datei oder des Verzeichnisses - String getpath() kompletter Verzeichnispfad - String getabsolutepath() liefert den absoluten Pfadnamen für eine Datei/ ein Verzeichnis - String getparent() liefert das über dem Dateiobjekt liegende Verzeichnis 18.12.2011 Prof. Dr. Andreas Schmietendorf 7

Arbeiten mit Files Es existieren eine Reihe von Methoden, um Informationen über ein File-Objekt zu gewinnen. Hier eine Auswahl: - boolean exists() Testet, ob eine Datei oder ein Verzeichnis überhaupt existiert. - boolean isfile() boolean isdirectory() Unterscheidung, ob es sich um eine Datei oder um ein Verzeichnis handelt. - long length() Liefert die Länge der Datei in Bytes zurück und ist undefiniert für Verzeichnisse. - long lastmodified() Zeitpunkt der letzten Änderung in Millisekunden seit 1.1.1970. 18.12.2011 Prof. Dr. Andreas Schmietendorf 8

Arbeiten mit Files Wurde ein Verzeichnis-Objekt konstruiert, können darauf verschiedene lesende und verändernde Methoden angewendet werden: - String[] list() liefert ein Array von Strings, das die Namen aller Dateien und Unterverzeichnisse enthält. - File[] listfiles() liefert alle Dateien und Unterverzeichnisse als File-Objekte - boolean mkdir() legt ein Verzeichnis an, wenn es noch nicht existiert. - boolean mkdirs() legt auch alle Vaterverzeichnisse an, falls diese nicht existieren - boolean delete() löscht die Datei bzw. das Verzeichnis 18.12.2011 Prof. Dr. Andreas Schmietendorf 9

Arbeiten mit Files Realisieren Sie auf der Konsole eine Eingabe-Shell (Command Line Interface), die auf dem Dateisystem arbeitet. Die folgenden Befehle sollen mögliche Eingaben sein: - dir listet alle Dateien und Unterverzeichnisse auf. Es werden der Name und die Größe in Bytes ausgegeben. - cd <dir> wechselt in das angegebene Verzeichnis <dir> - del <name> löscht die angegebene Datei bzw. das Verzeichnis. Gibt eine Fehlermeldung aus, falls es sich um ein Verzeichnis handelt, das nicht leer ist. - end beendet das Programm Als Eingabeprompt wird der aktuelle Pfad angezeigt - z.b. c:\programme\ >> 18.12.2011 Prof. Dr. Andreas Schmietendorf 10

Arbeiten mit Files Hinweise zur Übung: - Es handelt sich um eine Eingabeschleife, die nur abbricht, falls end eingegeben wurde. Der Eingabestring kann mit substring(int begin, int end) untersucht werden. Legen Sie ein File-Objekt an, das den aktuellen Standort repräsentiert. - Verwenden Sie zur Strukturierung ihrer Anwendung entsprechende Methoden, welche die eigentlichen Aufgaben enthalten. - Testen Sie zu Beginn der Übung die einzelnen Funktionen (dir, cd, del) im Rahmen eines entsprechenden Testprogramms. 18.12.2011 Prof. Dr. Andreas Schmietendorf 11

Arbeiten mit Files public static void dir (String v){ // Dateiobjekt entsprechend übergebenen Pfad anlegen File fi = new File(v); // Datum umwandeln Date d = new Date(fi.lastModified()); System.out.println("letzte Änderung" + d); System.out.println("Pfad "+fi.getabsolutepath()); // Liste der Dateien und Verzeichnisse einlesen String teststring [] = fi.list(); for (int i = 0; i<teststring.length; i++){ System.out.print(teststring [i]); String fn = fi.getabsolutepath()+"/"+teststring [i]; File f1 = new File(fn); System.out.println(" \t \t --- Filegröße " + f1.length() + " Byte "); } } 18.12.2011 Prof. Dr. Andreas Schmietendorf 12

Arbeiten mit Files Ergebnis der aufgerufenen Methode: letzte Änderung: Wed Dec 07 16:43:15 CET 2005 Pfad c:\ AUTOEXEC.BAT boot.ini bootfont.bin CONFIG.SYS dateien --- Filegröße 0 Byte --- Filegröße 211 Byte --- Filegröße 4952 Byte --- Filegröße 0 Byte --- Filegröße 0 Byte 18.12.2011 Prof. Dr. Andreas Schmietendorf 13

Sequentieller Zugriff 18.12.2011 Prof. Dr. Andreas Schmietendorf 14

Sequentieller Zugriff Öffnen einer Datei für den lesenden Zugriff: Konstruktoren für den sequenziellen Lesezugriff: - FileReader(String filename) throws FileNotFoundException - FileReader (File f) throws FileNotFoundException Ist eine Datei nicht vorhanden, wird eine Exception generiert. Alle Methoden werden ererbt von der Klasse InputStreamReader 18.12.2011 Prof. Dr. Andreas Schmietendorf 15

Sequentieller Zugriff Einlesen einzelner Zeichen mittels der Methode read(): try{ FileReader f = new FileReader("c:\\hallo.txt"); while ((c = f.read())!= -1){ System.out.print((char)c); } f.close(); } catch (IOException e) { System.out.println("Fehler"); } 18.12.2011 Prof. Dr. Andreas Schmietendorf 16

Sequentieller Zugriff Übung: Implementieren Sie ein kleines Programm zum Einlesen einer von ihnen selbst erzeugten Textdatei. - Anlegen einer Textdatei (mindestens 100 Zeichen lang) - Auslesen der Textdatei Verwenden Sie das im Rahmen der Vorlesung zur Verfügung gestellte Codefragment. 18.12.2011 Prof. Dr. Andreas Schmietendorf 17

Sequentieller Zugriff Öffnen einer Datei für den Schreibzugriff: Konstruktoren für den sequenziellen Schreibzugriff: - FileWriter(String filename) throws IOException - FileWriter(String filename, boolean append) throws IOException - FileWriter(File f) throws IOException Existiert eine Datei bereits, wird sie überschrieben. Es können allerdings auch Daten angehängt werden, wenn append auf true gesetzt wird. 18.12.2011 Prof. Dr. Andreas Schmietendorf 18

Sequentieller Zugriff Mit der Methode write können Zeichen oder Strings in der Datei abgelegt werden: FileWriter f = new FileWriter( hallo.txt ); f.write( hallo ); Mit der Methode print können beliebige Datentypen in der Datei abgelegt werden: PrintWriter f = new PrintWriter( new FileWriter( hallo.txt )); f.print(7.123); Geöffnete Dateien sollten mit der Methode close wieder geschlossen werden: f.close() 18.12.2011 Prof. Dr. Andreas Schmietendorf 19

Sequentieller Zugriff Schreiben in ein File mittels der Methode write(): try{ FileWriter f = new FileWriter("c:\\hallo1.txt"); for (int i = 1; i<10; i++){ f.write(i*10+" in das File hineinschreiben \n"); } f.write("fileende - A. Schmietendorf"); f.close(); } catch (IOException e) { System.out.println("Fehler"); } 18.12.2011 Prof. Dr. Andreas Schmietendorf 20

Sequentieller Zugriff Übung: Implementieren Sie ein kleines Programm zum Schreiben einer Textdatei. - Schreiben einer Textdatei (mindestens 100 Zeichen lang) - Auslesen der Textdatei zum Test - Anhängen von Text an eine bestehende Datei (Methode append) Verwenden Sie das im Rahmen der Vorlesung zur Verfügung gestellte Codefragment. 18.12.2011 Prof. Dr. Andreas Schmietendorf 21

Sequentieller Zugriff Die verwendeten Klassen zum Lesen und Schreiben einer Datei bezogen sich auf Zeichen Sollen hingegen ein Bytes (allgemeines Format) geschrieben oder gelesen werden, sind entsprechende Streamklassenzu verwenden. Die Klassen FileOutputStream und FileInputStream ermöglichen es, ein File mit dem Eingabe- und Ausgabestream zu verbinden. 18.12.2011 Prof. Dr. Andreas Schmietendorf 22

Sequentieller Zugriff Byteweise Ausgabe in eine Datei: Ein FileOutputStream stellt einen Byte-Stream zur Ausgabe in eine Datei zur Verfügung: - FileOutputStream(String name) throws FileNotFoundException - FileOutputStream(String name, boolean append) throws FileNotFoundException - FileOutputStream(File f) throws FileNotFoundException Existiert eine Datei bereits, wird sie überschrieben. Es können allerdings auch Bytes angehängt werden, wenn append auf true gesetzt wird. 18.12.2011 Prof. Dr. Andreas Schmietendorf 23

Sequentieller Zugriff Byteweise Ausgabe in eine Datei: Mit der Methode write können einzelne Bytes oder ganze Byte- Arrays ausgeben werden: FileOutputStream out = new FileOutputStream( hallo.txt ); out.write(255); // Byte mit Wert 255 schreiben byte[] buf = {1, 2, 3}; out.write(buf,0,buf.length); // Byte-Array von Index 0 // mit buf.length Werten // in Datei schreiben 18.12.2011 Prof. Dr. Andreas Schmietendorf 24

Sequentieller Zugriff Byteweise Ausgabe in eine Datei: Ein FileInputStream stellt einen Byte-Stream zum Lesen aus einer Datei zur Verfügung: - FileInputStream(String name) throws FileNotFoundException - FileInputStream(File f) throws FileNotFoundException Mit der Methode read kann byteweise oder in ein Byte-Array ausgelesen werden: FileInputStream in = new FileInputStream( hallo.txt ); int b = in.read(); // 1. Einzelnes Byte lesen byte[] buf = new byte[1024]; int len = in.read(buf); // 2. Byte-Array lesen: // len zeigt an, wieviele Bytes // gelesen wurden 18.12.2011 Prof. Dr. Andreas Schmietendorf 25

Sequentieller Zugriff Übung: Erweitern Sie die Shell um einen Befehl cat <name>, der eine Datei <name> auf der Konsole ausgibt. - Beispiel: d:\workspace\test\ >> cat test.txt gibt die Datei test.txt auf der Konsole aus - Hinweis: Nutzen Sie die zeichenweise Ein- und Ausgabe. Zusatzaufgabe (Optional): Erweitern Sie die Shell um einen Befehl copy <name1><name2>, der die Datei <name1> in die neue Datei <name2> kopiert. Hinweis: Nutzen Sie hierbei die byteweise Ein- und Ausgabe. 18.12.2011 Prof. Dr. Andreas Schmietendorf 26

Wahlfreier Zugriff 18.12.2011 Prof. Dr. Andreas Schmietendorf 27

Wahlfreier Zugriff Die Klasse RandomAccessFile erlaubt den direkten Zugriff auf beliebige Positionen innerhalb einer Datei. (vgl. zu den aus der Sprache C bekannten FILE-Deskriptoren) Die Klasse RandomAccessFile stellt Methoden zum Anlegen neuer und zum Öffnen vorhandener Dateien zur Verfügung. - RandomAccessFile(String name, String mode) throws FileNotFoundException - RandomAccessFile(File file, String mode) throws IOException 18.12.2011 Prof. Dr. Andreas Schmietendorf 28

Wahlfreier Zugriff Die Datei kann entweder über einen betriebssystemunabhängigen Dateinamen name oder ein vorher erzeugtes Fileobjekt file angegeben werden. Der Parameter mode gibt die Art des Zugriffs auf die Datei an: - r = reiner Lesemodus - rw = Lese- und Schreibmodus Das Schließen einer Random-Access-Datei erfolgt durch Aufruf der Methode close(). Dies leert die internen Puffer veranlasst das betriebsysteminterne Schließen der Datei 18.12.2011 Prof. Dr. Andreas Schmietendorf 29

Wahlfreier Zugriff Zunächst können von einem File-Objekt die Bestandteile des Dateinamens gelesen werden: - String getname() Name der Datei oder des Verzeichnisses - String getpath() kompletter Verzeichnispfad - String getabsolutepath() liefert den absoluten Pfadnamen für eine Datei/ ein Verzeichnis - String getparent() liefert das über dem Dateiobjekt liegende Verzeichnis 18.12.2011 Prof. Dr. Andreas Schmietendorf 30

Wahlfreier Zugriff Es werden verschiedene Methoden zur Positionierung des Satzzeigers (Navigation innerhalb des Files) zur Verfügung gestellt: - long getfilepointer() liefert die aktuelle Position des Satzzeigers; das erste Byte steht an Position 0. - void seek(long pos) setzt den Satzzeiger auf die Position pos. - void skipbytes(int n) setzt den Satzzeiger auf n Bytes nach der aktuellen Position 18.12.2011 Prof. Dr. Andreas Schmietendorf 31

Wahlfreier Zugriff Außerdem kann die Länge einer Datei ausgelesen und verändert werden: - long length() liefert die aktuelle Länge der Datei throws IOException - void setlength(long length) verändert die Länge der Datei. throws IOException Die Datei kann verkürzt und vergrößert werden. Der Wert der neuen Bytes ist allerdings undefiniert. 18.12.2011 Prof. Dr. Andreas Schmietendorf 32

Wahlfreier Zugriff Es liegen Lesefunktionen für verschiedene Datentypen vor, die im Binärformat gelesen werden. Beispiele: - boolean readboolean() - char readchar() - double readdouble() Dabei wird erwartet, dass die Daten in dem durch die korrespondierenden write -Methoden erzeugten Binärformat vorliegen. Darüber hinaus stehen auch read-methoden zur Verfügung, die zum Einlesen eines einzelnen Bytes oder einer Menge von Bytes verwendet werden können: - int read() // Liefert Byte als int zurück - int read(byte[] b) // Liefern Anzahl gelesener - int read(byte[] b, int off, int len) // Bytes zurueck 18.12.2011 Prof. Dr. Andreas Schmietendorf 33

Wahlfreier Zugriff Folgende Schreibfunktionen zum Schreiben von Daten der unterschiedlicher Datentypen stehen zur Verfügung. Beispiele: - void writeboolean(boolean v) - void writechar(int v) - void writedouble(double v) Entsprechend den read-methoden stehen auch zum Schreiben write-methoden zur Verfügung, die einzelne Bytes oder Byte-Arrays schreiben: - void write(int b) - void write(byte[] b) - void write(byte[] b, int off, int len) 18.12.2011 Prof. Dr. Andreas Schmietendorf 34

Wahlfreier Zugriff import java.io.*; public class RandomAcc { public static void main(string[] args) throws IOException{ // TODO Auto-generated method stub RandomAccessFile fi = new RandomAccessFile ("c:\\dateien/rnd_test.txt", "rw"); String s = "Programmieren ohne Java"; fi.seek(0); fi.writebytes(s); System.out.println("Position: "+fi.getfilepointer()); fi.seek(14); fi.writebytes("mit "); fi.close(); } } 18.12.2011 Prof. Dr. Andreas Schmietendorf 35

Wahlfreier Zugriff Übung: Erstellen Sie ein Java-Programm, das als Eingabe einen Dateinamen erhält und den Inhalt der Datei an das Ende der Datei spiegelverkehrt anhängt. Vorgehen: - Bestimmen Sie zunächst die Länge der Datei und verdoppeln Sie diese mit der Methode setlength. - Dann lesen Sie die Datei von Beginn an und schreiben die gelesenen Bytes an das Ende der Datei, wobei Sie Richtung Dateimitte fortfahren. 18.12.2011 Prof. Dr. Andreas Schmietendorf 36