|
Java プラットフォーム 1.2 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
バイナリストリームからバイトを読み込み、そこから Java のプリミティブ型のどれかでデータを再作成するために提供されています。また、Java の修正 UTF-8 形式のデータから String を再作成する機能もあります。
このインタフェースのすべての読み込みルーチンでは、必要なバイト数が読み込まれる前にファイルの終わりに達した場合は、通常、EOFException (IOException の一種) がスローされます。ファイルの終わりに達したという以外の理由でバイトの読み込みに失敗した場合は、EOFException 以外の IOException がスローされます。特に、入力ストリームが閉じられていると、IOException がスローされます。
DataInputStream,
DataOutput| メソッドの概要 | |
boolean |
readBoolean()
1 バイトの入力データを読み込んで、そのバイトがゼロ以外の場合は true、そのバイトがゼロの場合は false を返します。 |
byte |
readByte()
1 バイトの入力データを読み込んで返します。 |
char |
readChar()
入力データの char を読み込んで、char 値を返します。 |
double |
readDouble()
8 バイトの入力データを読み込んで、 double 値を返します。 |
float |
readFloat()
4 バイトの入力データを読み込んで、 float 値を返します。 |
void |
readFully(byte[] b)
入力ストリームからいくつかのバイトを読み込んで、バッファ配列 b に格納します。 |
void |
readFully(byte[] b,
int off,
int len)
入力ストリームから len バイトを読み込みます。
|
int |
readInt()
4 バイトの入力データを読み込んで、 int 値を返します。 |
String |
readLine()
入力ストリームから、次の行のテキストを読み込みます。 |
long |
readLong()
8 バイトの入力データを読み込んで、 long 値を返します。 |
short |
readShort()
2 バイトの入力データを読み込んで、 short 値を返します。 |
int |
readUnsignedByte()
1 バイトの入力データを読み込んで、 int 型にゼロ拡張して結果を返します。 |
int |
readUnsignedShort()
2 バイトの入力データを読み込んで、 0 〜 65535 の範囲の int 値を返します。 |
String |
readUTF()
修正 UTF-8 形式でコード化された文字列を読み込みます。 |
int |
skipBytes(int n)
入力ストリームから n バイトをスキップするようにして、スキップしたバイトを破棄します。 |
| メソッドの詳細 |
public void readFully(byte[] b)
throws IOException
b に格納します。読み込まれるバイト数は b の長さに一致します。
このメソッドは、以下の条件の 1 つが発生するまでブロックします。
b.length バイトの入力データが読み込み可能。この場合、通常の値が返される
EOFException がスローされる
EOFException ではなく IOException がスローされる
b が null の場合、NullPointerException がスローされます。b.length がゼロの場合、読み込まれるデータはありません。そうでない場合、読み込まれる最初のバイトは要素 b[0] に、次のバイトは要素 b[1] にと順次格納されていきます。このメソッドから例外がスローされると、b のすべてではないにしても一部のバイトが入力ストリームのデータで更新されています。
b - データが読み込まれるバッファ
public void readFully(byte[] b,
int off,
int len)
throws IOException
len バイトを読み込みます。
このメソッドは、以下の条件の 1 つが発生するまでブロックします。
len バイトの入力データが読み込み可能。この場合は、正常に復帰する
EOFException がスローされる
EOFException ではなく IOException がスローされる
b が null の場合、NullPointerException がスローされます。off が負の値の場合、len が負の値の場合、あるいは off+len が配列 b の長さよりも大きい場合、IndexOutOfBoundsException がスローされます。len がゼロの場合、読み込まれるバイトはありません。そうでない場合、読み込まれる最初のバイトは要素 b[off] に、次のバイトは要素 b[off+1] にと順次格納されていきます。読み込まれるバイト数は、最大でも len までです。
b - データが読み込まれるバッファ
public int skipBytes(int n)
throws IOException
n バイトをスキップするようにして、スキップしたバイトを破棄します。ただし、n より少ないバイト数 (ゼロの場合もある) しかスキップしない場合もあります。これは、いくつかの条件のうちの 1 つに該当した場合に発生します。n バイトをスキップする前にファイルの終わりに達してしまった場合もその 1 つです。このメソッドが EOFException をスローすることはありません。スキップされた実際のバイト数が返されます。n - スキップするバイト数n に等しい
public boolean readBoolean()
throws IOException
true、そのバイトがゼロの場合は false を返します。このメソッドは、DataOutput インタフェースの writeBoolean メソッドが書き込むバイトを読み込むのに適しています。boolean の値
public byte readByte()
throws IOException
-128 〜 127 の範囲 (上下限値を含む) の符号付きの値として処理されます。このメソッドは、DataOutput インタフェースの writeByte メソッドによって書き込まれたバイトを読み込むのに適しています。
public int readUnsignedByte()
throws IOException
int 型にゼロ拡張して結果を返します。結果はこのため、0 〜 255 の範囲内になります。DataOutput インタフェースの writeByte メソッドの引数がこの範囲内の値になるように意図されている場合、このメソッドは writeByte メソッドによって書き込まれたバイトを読み込むのに適しています。
public short readShort()
throws IOException
short 値を返します。a を 1 番目のバイト、b を 2 番目のバイトとすると、戻り値は次のようになります。
(short)((a << 8) * | (b & 0xff))
このメソッドは、DataOutput インタフェースの writeShort メソッドによって書き込まれたバイトを読み込むのに適しています。
public int readUnsignedShort()
throws IOException
0 〜 65535 の範囲の int 値を返します。a を 1 番目のバイト、b を 2 番目のバイトとすると、戻り値は次のようになります。
(((a & 0xff) << 8) | (b & 0xff))
DataOutput インタフェースの writeShort メソッドの引数が 0 〜 65535 の範囲の値になるように意図されている場合、このメソッドは writeShort メソッドによって書き込まれたバイトを読み込むのに適しています。
public char readChar()
throws IOException
char を読み込んで、char 値を返します。Unicode char は 2 バイトから構成されます。a を 1 番目のバイト、b を 2 番目のバイトとすると、戻り値は次のようになります。
(char)((a << 8) | (b & 0xff))
このメソッドは、DataOutput インタフェースの writeChar メソッドによって書き込まれたバイトを読み込むのに適しています。char の値
public int readInt()
throws IOException
int 値を返します。a を 1 番目、b を 2 番目、c を 3 番目、d を 4 番目のバイトとすると、戻り値は次のようになります。
(((a & 0xff) << 24) | ((b & 0xff) << 16) |
((c & 0xff) << 8) | (d & 0xff))
このメソッドは、DataOutput インタフェースの writeInt メソッドによって書き込まれたバイトを読み込むのに適しています。int の値
public long readLong()
throws IOException
long 値を返します。a を 1 番目、b を 2 番目、c を 3 番目、d を 4 番目、e を 5 番目、f を 6 番目、g を 7 番目、h を 8 番目のバイトとすると、戻り値は次のようになります。
(((long)(a & 0xff) << 56) |
((long)(b & 0xff) << 48) |
((long)(c & 0xff) << 40) |
((long)(d & 0xff) << 32) |
((long)(e & 0xff) << 24) |
((long)(f & 0xff) << 16) |
((long)(g & 0xff) << 8) |
((long)(h & 0xff)))
このメソッドは、DataOutput インタフェースの writeLong メソッドによって書き込まれたバイトを読み込むのに適しています。
long の値
public float readFloat()
throws IOException
float 値を返します。このためには、まず readInt メソッドとまったく同じ方法で int 値を作成し、次にこの int 値を Float.intBitsToFloat メソッドとまったく同じ方法で float に変換します。このメソッドは、DataOutput インタフェースの writeFloat メソッドによって書き込まれたバイトを読み込むのに適しています。float の値
public double readDouble()
throws IOException
double 値を返します。このためには、まず readlong メソッドとまったく同じ方法で long 値を作成し、次にこの long 値を Double.longBitsToDouble メソッドとまったく同じ方法で double に変換します。このメソッドは、DataOutput インタフェースの writeDouble メソッドによって書き込まれたバイトを読み込むのに適しています。double の値
public String readLine()
throws IOException
String として返されます。このメソッドはバイトを処理するものなので、Unicode 文字セットの入力を完全にはサポートしません。
ファイルの終わりが検出されるまでに 1 バイトも読み込めなかった場合には、null が返されます。そうでない場合、読み込まれた各バイトはゼロ拡張によって char 型に変換されます。文字 '¥n' が検出されると、この文字は破棄され、読み込みは中止されます。文字 '¥r' が検出されると、この文字は破棄され、その次のバイトが文字 '¥n' に変換されますが、この文字も破棄されて、読み込みが中止されます。文字 '¥n' と文字 '¥r' のどちらかより前にファイルの終わりが検出されると、読み込みが中止されます。読み込みが中止されると、読み込まれて破棄されていないすべての文字を取り込んだ順番で格納している String が返されます。この文字列のそれぞれの文字は \u0100、つまり (char)256 より小さい値を持ちます。
public String readUTF()
throws IOException
readUTF の汎用規約では、Java の修正 UTF-8 形式でコード化された Unicode 文字列の表現を読み込みます。読み込まれた文字列は、String として返されます。
まず、2 バイトを読み込み、それを使って readUnsignedShort メソッドとまったく同じ方法で符号なし 16 ビット整数を作成します。この整数値は「UTF 長」と呼ばれ、読み込まれる追加のバイト数を表します。次に、このバイトがグループ単位で文字に変換されます。各グループの長さは、グループの先頭バイトの値から計算されます。グループに後続のバイトがあれば、それは次のグループの先頭バイトです。
グループの先頭バイトがビットパターンの 0xxxxxxx (ただし、x は 0 または 1 を意味する) に一致する場合、グループはそのバイトだけで構成されます。バイトはゼロ拡張されて単一の文字を表現します。
グループの先頭バイトがビットパターン 110xxxxx に一致する場合、そのグループはそのバイト a と 2 番目のバイト b から構成されます。バイト b が存在しない場合 (バイト a が読み込まれた一連のバイトの最後のものだった場合) や、バイト b がビットパターン 10xxxxxx に一致しない場合には、UTFDataFormatException がスローされます。そうでない場合、グループは次の文字に変換されます。
(char)(((a& 0x1F) << 6) | (b & 0x3F))
グループの先頭バイトがビットパターン 1110xxxx に一致する場合、そのグループは先頭バイト a に加えて、2 つのバイト b と c から構成されます。バイト c が存在しない場合 (バイト a が読み込まれた一連のバイトの最後の 2 つに入っていた場合) や、バイト b または c がビットパターン 10xxxxxx に一致しない場合には、UTFDataFormatException がスローされます。そうでない場合、グループは次の文字に変換されます。
(char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))
グループの先頭バイトがパターン 1111xxxx かパターン 10xxxxxx に一致する場合、UTFDataFormatException がスローされます。
この処理全体のどこかでファイルの終わりが検出されると、EOFException がスローされます。
各グループがこの処理で 1 文字に変換されると、対応するグループが入力ストリームから読み込まれたのと同じ順序で各文字が収集され、String を表現します。そして、この String が返されます。
DataOutput インタフェースの writeUTF メソッドを使うと、このメソッドで読み込むのに適したデータを書き込むことができます。
|
Java プラットフォーム 1.2 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||