Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 7. Auflage
 <<    <     >    >>   API  Kapitel 21 - Random-Access-I/O

21.2 Navigation in der Datei



21.2.1 Positionierung des Dateizeigers

Der Hauptunterschied zwischen dem sequenziellen und dem wahlfreien Zugriff auf eine Datei besteht darin, dass beim wahlfreien Zugriff mit einem expliziten Satzzeiger gearbeitet wird. Jeder Schreib- und Lesezugriff erfolgt an der Position, die durch den aktuellen Inhalt des Satzzeigers bestimmt wird, und positioniert den Zeiger um die Anzahl gelesener bzw. geschriebener Bytes weiter. Die Klasse RandomAccessFile stellt verschiedene Methoden zum Zugriff auf den Satzzeiger zur Verfügung:

public long getFilePointer()

public void seek(long pos)

public void skipBytes(int n)

public long length()
java.io.RandomAccessFile

getFilePointer liefert die aktuelle Position des Satzzeigers; das erste Byte einer Datei steht dabei an Position 0. Da der Rückgabewert vom Typ long ist, unterstützt Java den Zugriff auf Dateien, die größer als 2 GByte sind, sofern es das Betriebssystem zulässt.

Das Positionieren des Satzzeigers erfolgt mit der Methode seek an der durch pos angegebenen Stelle. Anders als in C bezieht sich der Wert von pos dabei immer auf den Anfang der Datei. Das Positionieren relativ zur aktuellen Position kann mit der Methode skipBytes erledigt werden. Die neue Position wird dabei aus der aktuellen Position plus dem Inhalt des Parameters n berechnet. Auch negative Werte für n sind dabei erlaubt und bewirken eine Rückwärtsverschiebung des Satzzeigers.

Es ist erlaubt, den Satzzeiger hinter das derzeitige Ende der Datei zu verschieben. Allerdings wird dadurch ihre tatsächliche Länge nicht verändert. Dies geschieht erst, wenn an der angesprungenen Position tatsächlich Zeichen geschrieben werden.

 Hinweis 

21.2.2 Die Länge der Datei

Die Klasse RandomAccessFile besitzt zwei Methoden zum Zugriff auf die Länge der Datei:

public long length()
  throws IOException

public void setLength(long length)
  throws IOException
java.io.RandomAccessFile

Mit length kann die derzeitige Länge der Datei bestimmt werden. Nach dem Öffnen einer bestehenden Datei liefert diese Methode deren initiale Länge. Schreibzugriffe am Ende der Datei erhöhen diesen Wert. Mit setLength kann die Länge der Datei verändert werden. Ist der als Argument übergebene Wert kleiner als die bisherige Länge, wird die Datei verkürzt. Ein eventuell dahinter stehender Dateizeiger wird auf das neue Ende der Datei gesetzt. Ist das Argument größer als die bisherige Länge, wird die Datei vergrößert. Der Wert der neu eingefügten Bytes bleibt allerdings undefiniert, bis sie explizit beschrieben werden.


 Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 7. Auflage, Addison Wesley, Version 7.0
 <<    <     >    >>   API  © 1998, 2011 Guido Krüger & Heiko Hansen, http://www.javabuch.de