1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
<html>
<head>
<title>
Handbuch der Java-Programmierung, 5. Auflage
</title>
</head>
<body>
<a name="startofbody"></a>
<script language="JavaScript" src="hjp4lib.js">
</script>
<script language="JavaScript">
installKbdHandler("97,#startofbody;101,#endofbody;116,cover.html;122,k100003.html;115,search.html;105,index.html;100,JDKDOCS;112,APIDOCS;104,k100130.html;106,k100131.html;107,k100133.html;108,k100136.html");
</script>
<table border=0 cellpadding=0 cellspacing=1 width="100%">
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100130.html"> << </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100131.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100133.html"> > </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100136.html"> >> </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
<td align="right">Kapitel 20 - Random-Access-I/O
</table>
<hr>
<!-- Section -->
<a name="sectlevel2id020002"></a>
<h2>20.2 Navigation in der Datei </h2>
<hr>
<ul>
<li><a href="k100132.html#sectlevel2id020002">20.2 Navigation in der Datei</a>
<ul>
<li><a href="k100132.html#sectlevel3id020002001">20.2.1 Positionierung des Dateizeigers</a>
<li><a href="k100132.html#sectlevel3id020002002">20.2.2 Die Länge der Datei</a>
</ul>
</ul>
<hr>
<!-- Section -->
<a name="sectlevel3id020002001"></a>
<h3>20.2.1 <a name="ixa101397">Positionierung des Dateizeigers</a></h3>
<p>
Der Hauptunterschied zwischen dem sequenziellen und dem wahlfreien
Zugriff auf eine Datei besteht darin, dass beim wahlfreien Zugriff
mit einem <i>expliziten</i> 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 <a href="index_r.html#ixb101016"><font color=#000080><tt>RandomAccessFile</tt></font></a>
stellt verschiedene Methoden zum Zugriff auf den Satzzeiger zur Verfügung:
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
<tr>
<td valign=top width=100%>
<font color="#660066">
<pre>
public long getFilePointer()
public void seek(long pos)
public void skipBytes(int n)
public long length()
</pre>
</font>
</td>
<td valign=top>
<a href="../jdkdocs/api/java/io/RandomAccessFile.html" onClick="this.href=getApiDoc('java.io.RandomAccessFile')"><font color="#660066" size=-1>java.io.RandomAccessFile</font></a></td>
</tr>
</table>
<p>
<a name="ixa101398"><a href="index_g.html#ixb101055"><font color=#000080><tt>getFilePointer</tt></font></a></a>
liefert die aktuelle Position des Satzzeigers; das erste Byte einer
Datei steht dabei an Position 0. Da der Rückgabewert vom Typ
<a href="index_l.html#ixb100245"><font color=#000080><tt>long</tt></font></a>
ist, unterstützt Java den Zugriff auf Dateien, die größer
als 2 GByte sind, sofern es das Betriebssystem zuläßt.
<p>
Das Positionieren des Satzzeigers erfolgt mit der Methode <a name="ixa101399"><a href="index_s.html#ixb101056"><font color=#000080><tt>seek</tt></font></a></a>
an die durch <font color="#000077"><tt>pos</tt></font> angegebene
Stelle. Anders als in C bezieht sich der Wert von <font color="#000077"><tt>pos</tt></font>
dabei immer auf den Anfang der Datei. Das Positionieren relativ zur
aktuellen Position kann mit der Methode <a name="ixa101400"><a href="index_s.html#ixb101057"><font color=#000080><tt>skipBytes</tt></font></a></a>
erledigt werden. Die neue Position wird dabei aus der aktuellen Position
plus dem Inhalt des Parameters <font color="#000077"><tt>n</tt></font>
berechnet. Auch negative Werte für <font color="#000077"><tt>n</tt></font>
sind dabei erlaubt und bewirken eine Rückwärtsverschiebung
des Satzzeigers.
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>
<p>
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.</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
<tr>
<td><font color="#FFFFFF"> Hinweis </font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
</tr>
</table>
<!-- Section -->
<a name="sectlevel3id020002002"></a>
<h3>20.2.2 Die Länge der Datei </h3>
<p>
Die Klasse <a href="index_r.html#ixb101016"><font color=#000080><tt>RandomAccessFile</tt></font></a>
besitzt zwei Methoden zum Zugriff auf die Länge der Datei:
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
<tr>
<td valign=top width=100%>
<font color="#660066">
<pre>
public long length()
throws IOException
public void setLength(long length)
throws IOException
</pre>
</font>
</td>
<td valign=top>
<a href="../jdkdocs/api/java/io/RandomAccessFile.html" onClick="this.href=getApiDoc('java.io.RandomAccessFile')"><font color="#660066" size=-1>java.io.RandomAccessFile</font></a></td>
</tr>
</table>
<p>
Mit <a name="ixa101401"><a href="index_l.html#ixb100275"><font color=#000080><tt>length</tt></font></a></a>
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 <a name="ixa101402"><a href="index_s.html#ixb101058"><font color=#000080><tt>setLength</tt></font></a></a>
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.
<hr>
<table border=0 cellpadding=0 cellspacing=1 width="100%">
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage, Addison
Wesley, Version 5.0.1
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100130.html"> << </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100131.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100133.html"> > </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100136.html"> >> </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
<td align="right">© 1998, 2007 Guido Krüger & Thomas
Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
</table>
<a name="endofbody"></a>
</body>
</html>
|