|
||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
このクラスのインスタンスは、ランダムアクセスファイルに対する読み取りと書き込みの両方をサポートしています。ランダムアクセスファイルは、ファイルシステムに格納されている大規模なバイトの配列と同じように動作します。この暗黙の配列の中には、「ファイルポインタ」と呼ばれる一種のカーソルまたはインデックスがあります。入力操作では、ファイルポインタからバイトの読み取りを開始し、読み取られたバイトの先までファイルポインタを進めます。ランダムアクセスファイルが読み取り / 書き込みモードで作成されている場合は、出力操作も利用できます。出力操作では、ファイルポインタからバイトの書き込みを開始し、書き込まれたバイトの先までファイルポインタを進めます。出力操作で暗黙の配列の現在の終了箇所を超えて書き込みを行うと、配列が拡張されます。ファイルポインタは、getFilePointer
メソッドによって読み取り、seek
メソッドによって設定することができます。
一般に、このクラスのすべての読み取りルーチンについて言えることですが、必要なバイト数を読み取る前にファイルの終わりに達した場合は、EOFException
(一種の IOException
) がスローされます。ファイルの終わり以外の何らかの理由でバイトを読み取れない場合は、EOFException
ではなく IOException
がスローされます。特に、ストリームが閉じていると、IOException
がスローされる可能性があります。
実装では、ファイルに書き込める最大のデータ量を適用するようにしてください。
メソッドの概要 | |
void |
close()
このランダムアクセスファイルのストリームを閉じて、ストリームに関連したシステムリソースをすべて解放します。 |
long |
getFilePointer()
このファイルの現在のオフセットを返します。 |
long |
length()
このファイルの長さを返します。 |
int |
read()
このファイルから 1 バイトのデータを読み取ります。 |
int |
read(byte[] b)
このファイルから最高 b.length バイトのデータを読み取り、バイトの配列に格納します。 |
int |
read(byte[] b,
int off,
int len)
このファイルから最高 len バイトのデータを読み取り、バイトの配列に格納します。 |
boolean |
readBoolean()
このファイルから boolean 値を読み取ります。 |
byte |
readByte()
このファイルから 8 ビットの符号付きの値を読み取ります。 |
char |
readChar()
このファイルから Unicode 文字を読み取ります。 |
double |
readDouble()
このファイルから double を読み取ります。 |
float |
readFloat()
このファイルから float を読み取ります。 |
void |
readFully(byte[] b)
現在のファイルポインタから始まる b.length バイトをこのファイルから読み取り、バイト配列に格納します。 |
void |
readFully(byte[] b,
int off,
int len)
現在のファイルポインタから始まる len バイトをこのファイルから正確に読み取り、バイト配列に格納します。 |
int |
readInt()
このファイルから 32 ビットの符号付き整数を読み取ります。 |
java.lang.String |
readLine()
このファイルから、次のテキスト行を読み取ります。 |
long |
readLong()
このファイルから 64 ビットの符号付き整数を読み取ります。 |
short |
readShort()
このファイルから 16 ビットの符号付きの数値を読み取ります。 |
int |
readUnsignedByte()
このファイルから 8 ビットの符号なしの数値を読み取ります。 |
int |
readUnsignedShort()
このファイルから 16 ビットの符号なしの数値を読み取ります。 |
java.lang.String |
readUTF()
このファイルから文字列を読み取ります。 |
void |
seek(long pos)
このファイルの先頭から測定されたファイルポインタのオフセットを設定します。 |
void |
setLength(long newLength)
このファイルの長さを設定します。 |
int |
skipBytes(int n)
n バイトの入力をスキップして、そのスキップされたバイトを破棄します。
|
void |
write(byte[] b)
b.length バイトを指定されたバイト配列からこのファイルに書き込みます。 |
void |
write(byte[] b,
int off,
int len)
オフセット off から始まる len バイトを指定されたバイト配列からこのファイルに書き込みます。 |
void |
write(int b)
指定されたバイトをこのファイルに書き込みます。 |
void |
writeBoolean(boolean v)
boolean を 1 バイトの値としてファイルに書き込みます。 |
void |
writeByte(int v)
byte を 1 バイトの値としてファイルに書き込みます。 |
void |
writeBytes(java.lang.String s)
文字列を一連のバイトとしてファイルに書き込みます。 |
void |
writeChar(int v)
char を 2 バイトの値 (上位バイトが先) としてファイルに書き込みます。 |
void |
writeChars(java.lang.String s)
文字列を一連の文字としてファイルに書き込みます。 |
void |
writeDouble(double v)
Double クラスの doubleToLongBits メソッドを使用して、double 引数を long に変換してから、その long 値を 8 バイトの値 (上位バイトが先) としてファイルに書き込みます。 |
void |
writeFloat(float v)
Float クラスの floatToIntBits メソッドを使用して、float 引数を int に変換してから、その int 値を 4 バイトの値 (上位バイトが先) としてファイルに書き込みます。 |
void |
writeInt(int v)
int を 4 バイト (上位バイトが先) としてファイルに書き込みます。 |
void |
writeLong(long v)
long を 8 バイト(上位バイトが先) としてファイルに書き込みます 。 |
void |
writeShort(int v)
short を 2 バイト (上位バイトが先) としてファイルに書き込みます。 |
void |
writeUTF(java.lang.String str)
マシンに依存しない方法で、UTF-8 エンコーディングを使用して文字列をファイルに書き込みます。 |
メソッドの詳細 |
public void close() throws java.io.IOException
java.io.IOException
- 入出力エラーが発生した場合public long length() throws java.io.IOException
java.io.IOException
- 入出力エラーが発生した場合public long getFilePointer() throws java.io.IOException
java.io.IOException
- 入出力エラーが発生した場合public int read() throws java.io.IOException
0x00-0x0ff
) の整数として返されます。入力が行えない場合は、このメソッドはブロックされます。
JNLPRandomAccessFile
は InputStream
のサブクラスではありませんが、このメソッドは InputStream
の read メソッドとまったく同じように動作します。
-1
java.io.IOException
- 入出力エラーが発生した場合。ファイルの終わりに達した場合はスローされないpublic int read(byte[] b, int off, int len) throws java.io.IOException
len
バイトのデータを読み取り、バイトの配列に格納します。最低 1 バイトの入力が行われるまで、このメソッドはブロックされます。
JNLPRandomAccessFile
は InputStream
のサブクラスではありませんが、このメソッドは InputStream
の read(byte[], int, int) メソッドとまったく同じように動作します。
b
- データが読み込まれるバッファoff
- データのスタートオフセットlen
- 読み取られる最大バイト数-1
java.io.IOException
- 入出力エラーが発生した場合public int read(byte[] b) throws java.io.IOException
b.length
バイトのデータを読み取り、バイトの配列に格納します。最低 1 バイトの入力が行われるまで、このメソッドはブロックされます。
JNLPRandomAccessFile
は InputStream
のサブクラスではありませんが、このメソッドは InputStream
の read(byte[]) メソッドとまったく同じように動作します。
b
- データが読み込まれるバッファ-1
java.io.IOException
- 入出力エラーが発生した場合public void readFully(byte[] b) throws java.io.IOException
b.length
バイトをこのファイルから読み取り、バイト配列に格納します。このメソッドでは、要求されたバイト数が読み取られるまで、繰り返しこのファイルから読み取りを行います。要求されたバイト数が読み取られるか、ストリームの終わりが検出されるか、例外がスローされるまで、このメソッドはブロックされます。java.io.DataInput
内の readFully
b
- データが読み込まれるバッファEOFException
- すべてのバイトを読み取る前にファイルの終わりに達した場合java.io.IOException
- 入出力エラーが発生した場合public void readFully(byte[] b, int off, int len) throws java.io.IOException
len
バイトをこのファイルから正確に読み取り、バイト配列に格納します。このメソッドでは、要求されたバイト数が読み取られるまで、繰り返しこのファイルから読み取りを行います。要求されたバイト数が読み取られるか、ストリームの終わりが検出されるか、例外がスローされるまで、このメソッドはブロックされます。java.io.DataInput
内の readFully
b
- データが読み込まれるバッファoff
- データのスタートオフセットlen
- 読み取られるバイト数EOFException
- すべてのバイトを読み取る前にファイルの終わりに達した場合java.io.IOException
- 入出力エラーが発生した場合public int skipBytes(int n) throws java.io.IOException
n
バイトの入力をスキップして、そのスキップされたバイトを破棄します。
このメソッドでは、スキップされるバイト数がかなり少なくなる (ゼロの場合もある) 場合があります。これが起きる原因には、さまざまな状況が考えられます。可能性の 1 つとして、n
バイトがスキップされる前にファイルの終わりに達することがあげられます。このメソッドでは、EOFException
がスローされることはありません。実際にスキップされたバイト数が返されます。n
が負の数である場合は、スキップされるバイトはありません。
java.io.DataInput
内の skipBytes
n
- スキップされるバイト数java.io.IOException
- 入出力エラーが発生した場合public boolean readBoolean() throws java.io.IOException
boolean
値を読み取ります。このメソッドでは、現在のファイルポインタから始まる 1 バイトをファイルから読み取ります。値 0
は false
を表します。それ以外の値は true
を表します。そのバイトが読み取られるか、ストリームの終わりが検出されるか、例外がスローされるまで、このメソッドはブロックされます。java.io.DataInput
内の readBoolean
boolean
の値EOFException
- ファイルの終わりに達した場合java.io.IOException
- 入出力エラーが発生した場合public byte readByte() throws java.io.IOException
b
であり、ここで 0 <= b <= 255
である場合、結果は次のようになります。
(byte)(b)
そのバイトが読み取られるか、ストリームの終わりが検出されるか、例外がスローされるまで、このメソッドはブロックされます。
java.io.DataInput
内の readByte
byte
とみなされるEOFException
- ファイルの終わりに達した場合java.io.IOException
- 入出力エラーが発生した場合public int readUnsignedByte() throws java.io.IOException
そのバイトが読み取られるか、ストリームの終わりが検出されるか、例外がスローされるまで、このメソッドはブロックされます。
java.io.DataInput
内の readUnsignedByte
EOFException
- ファイルの終わりに達した場合java.io.IOException
- 入出力エラーが発生した場合public short readShort() throws java.io.IOException
b1
、b2
であり、それらの各値が 0
〜 255
(0 と 255 を含む) である場合、結果は次のようになります。
(short)((b1 << 8) | b2)
その 2 バイトが読み取られるか、ストリームの終わりが検出されるか、例外がスローされるまで、このメソッドはブロックされます。
java.io.DataInput
内の readShort
EOFException
- 2 バイトを読み取る前にファイルの終わりに達した場合java.io.IOException
- 入出力エラーが発生した場合public int readUnsignedShort() throws java.io.IOException
b1
、b2
であり、ここで 0 <= b1, b2 <= 255
である場合、結果は次のようになります。
(b1 << 8) | b2
その 2 バイトが読み取られるか、ストリームの終わりが検出されるか、例外がスローされるまで、このメソッドはブロックされます。
java.io.DataInput
内の readUnsignedShort
EOFException
- 2 バイトを読み取る前にファイルの終わりに達した場合java.io.IOException
- 入出力エラーが発生した場合public char readChar() throws java.io.IOException
b1
、b2
であり、ここで 0 <= b1, b2 <= 255
である場合、結果は次のようになります。
(char)((b1 << 8) | b2)
その 2 バイトが読み取られるか、ストリームの終わりが検出されるか、例外がスローされるまで、このメソッドはブロックされます。
java.io.DataInput
内の readChar
EOFException
- 2 バイトを読み取る前にファイルの終わりに達した場合java.io.IOException
- 入出力エラーが発生した場合public int readInt() throws java.io.IOException
b1
、b2
、b3
、b4
であり、ここで 0 <= b1, b2, b3, b4 <= 255
である場合、結果は次のようになります。
(b1 << 24) | (b2 << 16) + (b3 << 8) + b4
その 4 バイトが読み取られるか、ストリームの終わりが検出されるか、例外がスローされるまで、このメソッドはブロックされます。
java.io.DataInput
内の readInt
int
とみなされるEOFException
- 4 バイトを読み取る前にファイルの終わりに達した場合java.io.IOException
- 入出力エラーが発生した場合public long readLong() throws java.io.IOException
b1
、b2
、b3
、b4
、b5
、b6
、b7
、b8
であり、ここで次の条件が満たされる場合、
0 <= b1, b2, b3, b4, b5, b6, b7, b8 <=255,
結果は次のようになります。
((long)b1 << 56) + ((long)b2 << 48) + ((long)b3 << 40) + ((long)b4 << 32) + ((long)b5 << 24) + ((long)b6 << 16) + ((long)b7 << 8) + b8
その 8 バイトが読み取られるか、ストリームの終わりが検出されるか、例外がスローされるまで、このメソッドはブロックされます。
java.io.DataInput
内の readLong
long
とみなされるEOFException
- 8 バイトを読み取る前にファイルの終わりに達した場合java.io.IOException
- 入出力エラーが発生した場合public float readFloat() throws java.io.IOException
float
を読み取ります。このメソッドでは、readInt
メソッドと同様に、現在のファイルポインタから始まる int
値を読み取り、Float
クラスの intBitsToFloat
メソッドを使用して、その int
を float
に変換します。
その 4 バイトが読み取られるか、ストリームの終わりが検出されるか、例外がスローされるまで、このメソッドはブロックされます。
java.io.DataInput
内の readFloat
float
とみなされるEOFException
- 4 バイトを読み取る前にファイルの終わりに達した場合java.io.IOException
- 入出力エラーが発生した場合readInt()
public double readDouble() throws java.io.IOException
double
を読み取ります。このメソッドでは、readLong
メソッドと同様に、現在のファイルポインタから始まる long
値を読み取り、Double
クラスの longBitsToDouble
メソッドを使用して、その long
を double
に変換します。
その 8 バイトが読み取られるか、ストリームの終わりが検出されるか、例外がスローされるまで、このメソッドはブロックされます。
java.io.DataInput
内の readDouble
double
とみなされるEOFException
- 8 バイトを読み取る前にファイルの終わりに達した場合java.io.IOException
- 入出力エラーが発生した場合readLong()
public java.lang.String readLine() throws java.io.IOException
1 行のテキストは、キャリッジリターン文字 ('\r'
)、改行文字 ('\n'
)、キャリッジリターン文字の直後の改行文字、またはファイルの終わりによって終了します。 行末文字は破棄され、返される文字の一部にはなりません。
改行文字が読み取られるか、キャリッジリターンとその後のバイトが読み取られるか (改行かどうかを確認するため)、ファイルの終わりに達するか、例外がスローされるまで、このメソッドはブロックされます。
java.io.DataInput
内の readLine
java.io.IOException
- 入出力エラーが発生した場合public java.lang.String readUTF() throws java.io.IOException
このメソッドでは、readUnsignedShort
と同様に、現在のファイルポインタから始まる最初の 2 バイトが読み取られます。この値は、結果として得られる文字列の長さではなく、符号化された文字列に含まれている後続のバイトの数を示します。後続のバイトは、UTF-8 形式で文字を符号化するためのバイトと見なされ、文字に変換されます。
それらのバイトがすべて読み取られるか、ストリームの終わりが検出されるか、例外がスローされるまで、このメソッドはブロックされます。
java.io.DataInput
内の readUTF
EOFException
- すべてのバイトを読み取る前にファイルの終わりに達した場合java.io.IOException
- 入出力エラーが発生した場合UTFDataFormatException
- 読み取られたバイトが有効な Unicode 文字列の UTF-8 エンコーディングになっていない場合readUnsignedShort()
public void seek(long pos) throws java.io.IOException
pos
- ファイルの先頭からバイト単位で測定されたオフセット位置、この場所でファイルポインタが設定されるjava.io.IOException
- pos
が 0
よりも小さい場合、または入出力エラーが発生した場合public void setLength(long newLength) throws java.io.IOException
length
メソッドによって返されたファイルの現在の長さが newLength
引数よりも大きい場合、このファイルは切り捨てられます。この場合、getFilePointer
メソッドによって返されたファイルオフセットが newLength
よりも大きい場合、このオフセットは newLength
と等しくなります。
length
メソッドによって返されたファイルの現在の長さが newLength
引数よりも小さい場合、このファイルは拡張されます。この場合、ファイルの拡張部分の内容は未定義です。
newLength
- 望ましいファイルの長さjava.io.IOException
- 入出力エラーが発生した場合public void write(int b) throws java.io.IOException
java.io.DataOutput
内の write
b
- 書き込まれる byte
java.io.IOException
- 入出力エラーが発生した場合public void write(byte[] b) throws java.io.IOException
b.length
バイトを指定されたバイト配列からこのファイルに書き込みます。書き込みは、現在のファイルポインタから開始されます。java.io.DataOutput
内の write
b
- データjava.io.IOException
- 入出力エラーが発生した場合public void write(byte[] b, int off, int len) throws java.io.IOException
off
から始まる len
バイトを指定されたバイト配列からこのファイルに書き込みます。java.io.DataOutput
内の write
b
- データoff
- データのスタートオフセットlen
- 書き込むバイト数java.io.IOException
- 入出力エラーが発生した場合public void writeBoolean(boolean v) throws java.io.IOException
boolean
を 1 バイトの値としてファイルに書き込みます。値 true
は、値 (byte)1
として書き込まれます。値 false
は、値 (byte)0
として書き込まれます。書き込みは、ファイルポインタの現在位置から開始されます。java.io.DataOutput
内の writeBoolean
v
- 書き込まれる boolean
値java.io.IOException
- 入出力エラーが発生した場合public void writeByte(int v) throws java.io.IOException
byte
を 1 バイトの値としてファイルに書き込みます。書き込みは、ファイルポインタの現在位置から開始されます。java.io.DataOutput
内の writeByte
v
- 書き込まれる byte
値java.io.IOException
- 入出力エラーが発生した場合public void writeShort(int v) throws java.io.IOException
short
を 2 バイト (上位バイトが先) としてファイルに書き込みます。書き込みは、ファイルポインタの現在位置から開始されます。java.io.DataOutput
内の writeShort
v
- 書き込まれる short
java.io.IOException
- 入出力エラーが発生した場合public void writeChar(int v) throws java.io.IOException
char
を 2 バイトの値 (上位バイトが先) としてファイルに書き込みます。書き込みは、ファイルポインタの現在位置から開始されます。java.io.DataOutput
内の writeChar
v
- 書き込まれる char
値java.io.IOException
- 入出力エラーが発生した場合public void writeInt(int v) throws java.io.IOException
int
を 4 バイト (上位バイトが先) としてファイルに書き込みます。書き込みは、ファイルポインタの現在位置から開始されます。java.io.DataOutput
内の writeInt
v
- 書き込まれる int
java.io.IOException
- 入出力エラーが発生した場合public void writeLong(long v) throws java.io.IOException
long
を 8 バイト(上位バイトが先) としてファイルに書き込みます 。書き込みは、ファイルポインタの現在位置から開始されます。java.io.DataOutput
内の writeLong
v
- 書き込まれる long
java.io.IOException
- 入出力エラーが発生した場合public void writeFloat(float v) throws java.io.IOException
Float
クラスの floatToIntBits
メソッドを使用して、float 引数を int
に変換してから、その int
値を 4 バイトの値 (上位バイトが先) としてファイルに書き込みます。書き込みは、ファイルポインタの現在位置から開始されます。java.io.DataOutput
内の writeFloat
v
- 書き込まれる float
値java.io.IOException
- 入出力エラーが発生した場合public void writeDouble(double v) throws java.io.IOException
Double
クラスの doubleToLongBits
メソッドを使用して、double 引数を long
に変換してから、その long
値を 8 バイトの値 (上位バイトが先) としてファイルに書き込みます。書き込みは、ファイルポインタの現在位置から開始されます。java.io.DataOutput
内の writeDouble
v
- 書き込まれる double
値java.io.IOException
- 入出力エラーが発生した場合public void writeBytes(java.lang.String s) throws java.io.IOException
java.io.DataOutput
内の writeBytes
s
- 書き込まれる文字列 (バイト列)java.io.IOException
- 入出力エラーが発生した場合public void writeChars(java.lang.String s) throws java.io.IOException
writeChar
メソッドと同様に、各文字がデータ出力ストリームに書き込まれます。書き込みは、ファイルポインタの現在位置から開始されます。java.io.DataOutput
内の writeChars
s
- 書き込まれる String
値java.io.IOException
- 入出力エラーが発生した場合writeChar(int)
public void writeUTF(java.lang.String str) throws java.io.IOException
このメソッドでは、後続のバイトの数を示す writeShort
メソッドと同様に、まず 2 バイトが現在のファイルポインタを先頭にしてファイルに書き込まれます。この値は、文字列の長さではなく、実際に書き込まれるバイトの数を表しています。この長さに続いて、文字列の各文字が順番に、UTF-8 エンコーディングを使用して出力されます。
java.io.DataOutput
内の writeUTF
str
- 書き込まれる文字列java.io.IOException
- 入出力エラーが発生した場合
|
||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |