|
nanoJBlend | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
public interface DataInput
DataInput インタフェースはバイナリデータストリームからバイトデータを読み込み基本データ型のデータとして復元する機能を定義します。
また、「Modified UTF-8」形式のデータから String を復元する機能も定義します。
このインタフェースのメソッドでは、意図している長さのデータを読み込む前にストリームの終端に到達すると EOFException がスローされます。
ストリーム終端以外の理由でバイトデータを読み込めない場合は IOException がスローされます。
特に、既にストリームがクローズされている場合には IOException がスローされる可能性があります。
Modified UTF-8
DataInput インタフェースと DataOutput インタフェースの実装ではUnicode文字列を UTF-8 とは少し異なる形式で扱います。この形式を「Modified UTF-8」と呼びます。
Modified UTF-8 での文字エンコーディングの方法を以下に説明します。
以降の表では最上位ビットは左端に記載されています。
'\u0001' から '\u007F' までの文字は単一バイト値で表されます。
Bit値 バイト1
0 ビット6-0
null 文字 '\u0000'、および '\u0080' から '\u07FF' までの文字は2バイトで表現されます。
Bit値 バイト1
1 1 0 ビット10-6 バイト2
1 0 ビット5-0
'\u0800' から '\uFFFF' までの文字は3バイトで表現されます。
Bit値 バイト1
1 1 1 0 ビット15-12 バイト2
1 0 ビット11-6 バイト3
1 0 ビット5-0
注意:
null バイト '\u0000' は1バイトではなく2バイトにエンコードされます、したがってエンコード結果の文字列には null は含まれません。
| メソッドの概要 | |
|---|---|
boolean |
readBoolean()
1バイトを読み込み、値に基づいた boolean 値を返します。 |
byte |
readByte()
1バイト読み込んで返します。 |
char |
readChar()
2バイトを char 値として読み込みます。 |
void |
readFully(byte[] b)
b.length バイトを入力ストリームから読み込み、 b に格納します。 |
void |
readFully(byte[] b,
int off,
int len)
入力ストリームから len バイト読み込みます。 |
int |
readInt()
4バイトを int 値として読み込みます。 |
long |
readLong()
8バイトを long 値として読み込みます。 |
short |
readShort()
2バイトを short 値として読み込みます。 |
int |
readUnsignedByte()
1バイトを符号無し整数として読み込み、 int に格納して返します。 |
int |
readUnsignedShort()
2バイトを符号無し整数として読み込み、 int に格納して返します。 |
String |
readUTF()
Modified UTF-8 でエンコードされた文字列を読み込み、 String に格納して返します。 |
int |
skipBytes(int n)
入力ストリームから n バイトスキップして廃棄します。 |
| メソッドの詳細 |
|---|
void readFully(byte[] b)
throws IOException
b.length バイトを入力ストリームから読み込み、 b に格納します。
このメソッドは次のどれかの事象が起きるまでブロックします。
b.lengthバイト を正常に読み込むb.length バイトを読み込む前にストリームの終端に到達する
b が null の場合 NullPointerException がスローされます。
b.length がゼロの場合データは読み込まれません。
これら以外の場合、読み込まれた最初のバイトは b[0]、次は b[1] と順に格納されます。
もしこのメソッドから例外がスローされる場合は b のすべての要素が入力ストリームから読み込んだデータで更新されていない可能性があります。
b - このメソッドが読み込んだデータを格納するバッファ
EOFException - b.length バイトを読み込む前にストリームの終端に到達した場合
IOException - I/Oエラーが発生した場合
void readFully(byte[] b,
int off,
int len)
throws IOException
len バイト読み込みます。
このメソッドは次のどれかの条件が成立するまでブロックします。
len バイトの入力データがあり、正常に処理を終了できる
b が null の場合、 NullPointerException がスローされます。
off が負値の場合、 len が負値の場合、または off+len が配列 b の長さより大きい場合、 IndexOutOfBoundsException がスローされます。
len が零の場合、データは読み込まれません。
これら以外の場合、読み込まれた最初のバイトは b[off]、次は b[off+1] と順に格納されます。
データは最大で len バイトまで読み込まれます。
b - データを読み込むバッファoff - 最初のバイトをバッファに格納する配列要素のインデックスlen - 読み込むデータのバイト長
EOFException - 指定されたデータを全て読み込む前にストリームの終端に到達した場合
IOException - I/Oエラーが発生した場合
int skipBytes(int n)
throws IOException
n バイトスキップして廃棄します。
指定したより少ないバイト数(場合によっては 0 バイト)しかスキップしない場合があり得ます。
たとえば n バイトをスキップする前にストリームの終端に到達する場合などです。
このメソッドは EOFException をスローしません。
このメソッドは実際にスキップしたバイト数を返します。
n - スキップするバイト数
IOException - I/Oエラーが発生した場合
byte readByte()
throws IOException
DataOutput インタフェースの writeByte メソッドで書き込んだバイトデータを読み込むのに適しています。
EOFException - データを読み込む前にストリームの終端に到達した場合
IOException - I/Oエラーが発生した場合
boolean readBoolean()
throws IOException
boolean 値を返します。
読み込んだバイトが非零の場合 true、零の場合 false を返します。
このメソッドは DataOutput インタフェースの writeBoolean メソッドで書き込んだバイトデータを読み込むのに適しています。
boolean 値
EOFException - データを読み込む前にストリームの終端に到達した場合
IOException - I/Oエラーが発生した場合
int readUnsignedByte()
throws IOException
int に格納して返します。
このメソッドは DataOutput インタフェースの writeByte メソッドで書き込んだ byte 値を 0 から 255 までの符号無し整数として読み込むのに適しています。
int
EOFException - データを読み込む前にストリームの終端に到達した場合
IOException - I/Oエラーが発生した場合
short readShort()
throws IOException
short 値として読み込みます。
a を最初のバイト、 b を2番目のバイトとすると、このメソッドは (short)((a << 8)|(b & 0xff)) を返します。
このメソッドは DataOutput インタフェースの writeShort メソッドで書き込んだ整数データを読み込むのに適しています。
EOFException - データを読み込む前にストリームの終端に到達した場合
IOException - I/Oエラーが発生した場合
int readUnsignedShort()
throws IOException
int に格納して返します。
a を最初のバイト、b を2番目のバイトとすると、このメソッドは (((a & 0xff) << 8)|(b & 0xff)) を返します。
このメソッドは DataOutput インタフェースの writeShort メソッドで書き込んだ short 値を 0 から 65535 までの符号無し整数として読み込むのに適しています。
EOFException - データを読み込む前にストリームの終端に到達した場合
IOException - I/Oエラーが発生した場合
char readChar()
throws IOException
char 値として読み込みます。
a を最初のバイト、 b を2番目のバイトとすると、このメソッドは (char)((a << 8)|(b & 0xff)) を返します。
このメソッドは DataOutput インタフェースの writeChar メソッドで書き込んだバイトデータを読み込むのに適しています。
char 値
EOFException - データを読み込む前にストリームの終端に到達した場合
IOException - I/Oエラーが発生した場合
int readInt()
throws IOException
int 値として読み込みます。
バイト b0 、 b1 、 b2 、 b3 の4バイトをこの順に読み込んだとすると、このメソッドは、(((b0 & 0xff) << 24) |
((b1 & 0xff) << 16) |
((b2 & 0xff) << 8) |
(b3 & 0xff))DataOutput インタフェースの writeInt メソッドで書き込んだ整数データを読み込むのに適しています。
int 値
EOFException - データを読み込む前にストリームの終端に到達した場合
IOException - I/Oエラーが発生した場合
long readLong()
throws IOException
long 値として読み込みます。
バイト b0 、 b1 、 b2 、... b7 の8バイトをこの順に読み込んだとすると、このメソッドは、(((b0 & 0xff) << 56) |
((b1 & 0xff) << 48) |
((b2 & 0xff) << 40) |
((b3 & 0xff) << 32) |
((b4 & 0xff) << 24) |
((b5 & 0xff) << 16) |
((b6 & 0xff) << 8) |
(b7 & 0xff))DataOutput インタフェースの writeLong メソッドで書き込んだ整数データを読み込むのに適しています。
EOFException - データを読み込む前にストリームの終端に到達した場合
IOException - I/Oエラーが発生した場合
String readUTF()
throws IOException
String に格納して返します。
このメソッドは readUnsignedShort メソッドと同様に最初の2バイトを符号無し2バイト整数として読み込み、続く文字データブロックのバイト長であるとみなします。
文字データブロックは連続する複数のグループで構成されます。
各グループの最初のバイトからそのグループのバイト長が決定されます。
グループの最初のバイトの最上位ビット(ビット7)が 0 の場合、そのグループは最初のバイトだけから構成されます。
このバイトの上位バイトを0拡張した値が1文字を表します。
グループの最初のバイト a の上位3ビット(ビット7-5)が「 110 」であり、2番目のバイト b の上位2ビット(ビット7-6)が「 10 」である場合、このグループは a と b の2バイトで構成されます。
このグループは次の文字に変換されます。
(char)(((a & 0x1f) << 6) | (b & 0x3f))
2番目のバイト b が文字データブロックに存在しない、または存在するが上位2ビット(ビット7-6)が「 10 」ではない場合、 UTFDataFormatException がスローされます。
グループの最初のバイト a の上位4ビット(ビット7-4)が「 1110 」であり、2番目のバイト b および3番目のバイト c の上位2ビット(ビット7-6)が「 10 」である場合、このグループは a 、 b 、 c の3バイトで構成されます。
このグループは次の文字に変換されます。
(char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))
バイト b 、 c が文字データブロックに存在しない、または存在するが上位2ビット(ビット7-6)が「 10 」ではない場合、 UTFDataFormatException がスローされます。
グループの最初のバイト a の上位4ビット(ビット7-4)が「 1111 」である、または上位2ビット(ビット7-6)が「 10 」である場合、 UTFDataFormatException がスローされます。
以上の処理中にストリームの終端に到達した場合、 EOFException がスローされます。
以上の処理で文字データブロックに存在する全てのブロックが正常に変換できたら、このメソッドはブロックの順に変換して得られる文字列を String に設定して返します。
このメソッドは DataOutput インタフェースの writeUTF メソッドで書き込んだ文字列を読み込むのに適しています。
String
EOFException - データを読み込む前にストリームの終端に到達した場合
IOException - I/Oエラーが発生した場合
UTFDataFormatException - 読み込んだバイト列が有効な Modified UTF-8 文字列ではない場合
|
nanoJBlend | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||