From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/html/k100131.html | 192 +++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/html/k100131.html (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100131.html') diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100131.html b/Master/Reference Architectures and Patterns/hjp5/html/k100131.html new file mode 100644 index 0000000..2201f72 --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100131.html @@ -0,0 +1,192 @@ + + + +Handbuch der Java-Programmierung, 5. Auflage + + + + + + + + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage +
 <<  +  <   +  >   + >>  + API  +Kapitel 20 - Random-Access-I/O +
+
+ + + + +

20.1 Grundlegende Operationen

+
+ +
+ +

+Neben der stream-basierten Ein- und Ausgabe bietet die Java-Klassenbibliothek +auch die Möglichkeit des wahlfreien Zugriffs auf Dateien. +Dabei wird eine Datei nicht als Folge von Bytes angesehen, die nur +sequenziell durchlaufen werden kann, sondern als eine Art externes +Array, das an beliebiger Stelle gelesen oder beschrieben werden kann. + +

+Für den Zugriff auf Random-Access-Dateien stellt das Paket java.io +die Klasse RandomAccessFile +zur Verfügung. Anders als bei der stream-orientierten Ein-/Ausgabe +kann dabei allerdings nur auf »echte Dateien« zugegriffen +werden; die Verwendung von Arrays oder Pipes als Dateiersatz wird +nicht unterstützt. Auch das bei Streams realisierte Filterkonzept +ist in Random-Access-Dateien nicht zu finden. + +

+Die Klasse RandomAccessFile +stellt Methoden zum Anlegen neuer Dateien und zum Öffnen vorhandener +Dateien zur Verfügung. Für den lesenden oder schreibenden +Zugriff auf die Datei gibt es ähnliche Methoden wie bei der sequenziellen +Dateiverarbeitung. Zusätzlich kann der Satzzeiger wahlfrei positioniert +werden, und es ist möglich, seine aktuelle Position abzufragen. + +

+Das Öffnen von Random-Access-Dateien erfolgt mit dem Konstruktor +der Klasse RandomAccessFile, +der in zwei verschiedenen Varianten zur Verfügung steht: +

+ + + + + +
+ +
+public RandomAccessFile(File file, String mode)
+  throws IOException
+
+public RandomAccessFile(String name, String mode)
+  throws FileNotFoundException
+
+
+
+java.io.RandomAccessFile
+ +

+Bei der Übergabe des String-Parameters +name wird die Datei mit diesem +Namen geöffnet und steht für nachfolgende Schreib- und Lesezugriffe +zur Verfügung. Bei der Übergabe eines File-Objekts +wird die durch dieses Objekt spezifizierte Datei geöffnet (die +Klasse File +wird in Kapitel 21 besprochen). +Der zweite Parameter mode gibt +die Art des Zugriffs auf die Datei an. Er kann entweder »r« +sein, um die Datei nur zum Lesen zu öffnen, oder »rw«, +um sie zum Schreiben und zum Lesen zu öffnen. Ein reiner Schreibmodus, +wie er beispielsweise unter UNIX möglich wäre, wird nicht +unterstützt. +

+ + + + + + + + + + + +
+ +

+Während der Testphase des JDK 1.2 wurde die Deklaration der Konstruktoren +teilweise dahingehend geändert, dass bei Zugriffsproblemen nicht +mehr die Ausnahme IOException, +sondern FileNotFoundException +ausgelöst wird. Gründe für eine der beiden Ausnahmen +können sein, dass eine nicht vorhandene Datei zum Lesen geöffnet +werden soll, dass der Dateiname ein Verzeichnis bezeichnet +oder dass keine ausreichenden Zugriffsrechte auf die Datei zur Verfügung +stehen.

+ + + + +
 JDK1.1-6.0 
+
+

+ + + + + + + + + + + +
+ +

+Leider gibt es in der Klasse RandomAccessFile +keine explizite Differenzierung zwischen dem Öffnen einer +Datei zum Schreiben und dem Neuanlegen. Hier gilt die implizite +Regel, dass eine Datei neu angelegt wird, wenn sie beim Öffnen +im Modus »w« nicht vorhanden ist. Existiert sie dagegen, +wird sie unverändert geöffnet, und es gibt keine Möglichkeit, +ihren Inhalt zu löschen oder die Dateilänge auf einen bestimmten +Wert zu setzen. Glücklicherweise bietet die Klasse File +mit der Methode delete +die Möglichkeit, eine Datei zu löschen und so das Neuanlegen +über einen kleinen Umweg doch zu erreichen.

+ + + + +
 Warnung 
+
+ +

+Das Schließen einer Random-Access-Datei erfolgt wie bei Streams +durch Aufruf der parameterlosen Methode close. +Diese leert zunächst alle internen Puffer und ruft dann die entsprechende +Betriebssystemfunktion zum Schließen der Datei auf. +


+ + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage, Addison +Wesley, Version 5.0.1 +
 <<  +  <   +  >   + >>  + API  +© 1998, 2007 Guido Krüger & Thomas +Stark, http://www.javabuch.de +
+ + + -- cgit v1.2.3