16.11.2013 Aufrufe

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Programmieren</strong> <strong>in</strong> <strong>Java</strong><br />

7.4 Die RandomAccessFile-Klasse<br />

Für <strong>de</strong>n Zugriff auf Random-Access-Dateien stellt das Paket java.io die Klasse<br />

RandomAccessFile zur Verfügung. Es kann nur auf Dateien zugegriffen wer<strong>de</strong>n,<br />

auch das durch die „Streams“ realisierte Filter-Konzept gibt es <strong>in</strong> Random-Access-<br />

Dateien nicht.<br />

Öffnen, Neuanlegen und Schließen. Das Öffnen von Random-Access-Dateien erfolgt<br />

mit <strong>de</strong>n Konstruktoren:<br />

public RandomAccessFile(File datei, Str<strong>in</strong>g mo<strong>de</strong>) throws<br />

FileNotFoundException<br />

Bei <strong>de</strong>r Übergabe <strong>de</strong>s File-Objekts wird die durch dieses Objekt spezifizierte Datei<br />

geöffnet.<br />

public RandomAccessFile(Str<strong>in</strong>g name, Str<strong>in</strong>g mo<strong>de</strong>) throws<br />

FileNotFoundException<br />

Bei <strong>de</strong>r Übergabe <strong>de</strong>s Str<strong>in</strong>g-Parametres „name“ wird die Datei mit diesem Namen<br />

geöffnet. Der zweite Parameter mo<strong>de</strong> bestimmt die Art <strong>de</strong>s Zugriffs:<br />

- „r“: Öffnen nur zum Lesen<br />

- „rw“: Öffnen zum Schreiben und Lesen. E<strong>in</strong> re<strong>in</strong>er Schreibmodus wird nicht<br />

unterstützt.<br />

Es gibt <strong>in</strong> <strong>de</strong>r Klasse RandomAccessFile ke<strong>in</strong>e explizite Differenzierung zwischen<br />

Öffnen <strong>de</strong>r Datei und Neuanlegen. Implizit gilt: E<strong>in</strong>e Datei wird neu angelegt, wenn<br />

beim Öffnen im Modus „w“ nicht vorhan<strong>de</strong>n ist. Existiert die Datei bereits, wird sie<br />

unverän<strong>de</strong>rt geöffnet, und es gibt ke<strong>in</strong>e Möglichkeit, ihren Inhalt zu löschen o<strong>de</strong>r die<br />

Dateilänge auf e<strong>in</strong>en bestimmten Wert zusetzen.<br />

Das Schliessen erfolgt durch Aufruf <strong>de</strong>r parameterlosen Metho<strong>de</strong> close.<br />

Positionieren <strong>de</strong>s Dateizeigers. Je<strong>de</strong>r Schreib- und Lesezugriff erfolgt an <strong>de</strong>r<br />

Position, die durch <strong>de</strong>n aktuellen Inhalt <strong>de</strong>s Satzzeigers bestimmt wird und<br />

positioniert <strong>de</strong>n Zeiger um die Anzahl gelesener bzw. geschriebener Bytes weiter.<br />

Die Klasse RandomAccessFile stellt e<strong>in</strong>e Reihe von Metho<strong>de</strong>n zum Zugriff auf <strong>de</strong>n<br />

Satzzeiger zur Verfügung.<br />

Die Metho<strong>de</strong> seek. Die RandomAccessFile-Klasse besitzt alle Metho<strong>de</strong>n, die <strong>in</strong><br />

<strong>de</strong>n Schnittstellen DataInput und DataOutput verfügbar s<strong>in</strong>d. Mit public void<br />

seek(long dateiPosition) throws IOException kann man an je<strong>de</strong><br />

beliebige Position <strong>de</strong>r Datei spr<strong>in</strong>gen. Mit <strong>de</strong>r Metho<strong>de</strong> public long<br />

getFilePo<strong>in</strong>ter() throws IOException kann die <strong>de</strong>rzeitige Dateiposition 340<br />

bestimmt wer<strong>de</strong>n.<br />

Weiterh<strong>in</strong> stehen lesen<strong>de</strong> und schreiben<strong>de</strong> Zugriffsmetho<strong>de</strong>n zur Verfügung.<br />

340 Der Dateipositionswert <strong>in</strong> <strong>de</strong>n Metho<strong>de</strong>n seek und getFilePo<strong>in</strong>ter() ist die Anzahl <strong>de</strong>r Bytes vom<br />

Anfang bis zum En<strong>de</strong> <strong>de</strong>r Datei.<br />

477

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!