-
- 既知のすべてのサブインタフェース:
ImageInputStream
,ImageOutputStream
,ObjectInput
- 既知のすべての実装クラス:
DataInputStream
,FileCacheImageInputStream
,FileCacheImageOutputStream
,FileImageInputStream
,FileImageOutputStream
,ImageInputStreamImpl
,ImageOutputStreamImpl
,MemoryCacheImageInputStream
,MemoryCacheImageOutputStream
,ObjectInputStream
,RandomAccessFile
public interface DataInput
DataInput
インタフェースは、バイナリ・ストリームからバイトを読み込み、そこからJavaプリミティブ型のいずれかでデータを再構築するために提供されています。 また、修正UTF-8形式のデータからString
を再作成する機能もあります。必要なバイト数を読み込む前にend-of-fileに到達した場合、
IOException
の一種であるEOFException
がスローされますが、このことはこのインタフェースのすべての読込みルーチンに当てはまります。 end-of-file以外のなんらかの理由によりバイトを読み込むことができない場合、EOFException
以外のIOException
がスローされます。 特に、ストリームが閉じられた場合は、IOException
がスローされる可能性があります。修正UTF-8
DataInputインタフェースとDataOutputインタフェースの実装は、UTF-8を若干修正した形式のUnicodeで文字列を表現します。 (標準のUTF-8フォーマットに関する情報は、「Unicode標準、バージョン4.0」のセクション「3.9 Unicodeエンコーディング・フォーム」を参照してください。)
'\u0001'
〜'\u007F'
の範囲の文字は、1バイトで表されます。- ヌル文字
'\u0000'
と'\u0080'
〜'\u07FF'
の範囲の文字は、1対のバイトで表されます。 '\u0800'
〜'\uFFFF'
の範囲の文字は3バイトで表されます。
UTF-8値のエンコーディング 値 Byte ビット値 7 6 5 4 3 2 1 0 \u0001
から\u007F
へ1 0 ビット6-0 \u0000
,\u0080
〜\u07FF
1 1 1 0 ビット10-6 2 1 0 ビット5-0 \u0800
から\uFFFF
へ1 1 1 1 0 ビット15-12 2 1 0 ビット11-6 3 1 0 ビット5-0 標準UTF-8形式とこの形式とは、次の点で異なります。
- nullバイト
'\u0000'
は1バイトではなく、2バイト形式にコード化されます。これにより、コード化された文字列がその中に埋め込まれたnullを持つことはありません。 - 1バイト、2バイト、および3バイト形式だけを使います。
- 補助文字は、サロゲート・ペアの形式で表されます。
- 導入されたバージョン:
- 1.0
- 関連項目:
DataInputStream
,DataOutput
-
-
メソッドのサマリー
修飾子と型 メソッド 説明 boolean
readBoolean()
1バイトの入力データを読み込んで、そのバイトがゼロ以外の場合はtrue
、そのバイトがゼロの場合はfalse
を返します。byte
readByte()
1バイトの入力データを読み込んで返します。char
readChar()
2バイトの入力データを読み込んで、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
型にゼロ拡張して、結果を返します。結果はこのため、0
-255
の範囲内になります。int
readUnsignedShort()
2バイトの入力データを読み込んで、0
-65535
の範囲のint
値を返します。String
readUTF()
修正UTF-8形式でエンコードされた文字列を読み込みます。int
skipBytes(int n)
入力ストリームからn
バイトをスキップするようにして、スキップしたバイトを破棄します。
-
-
-
メソッドの詳細
-
readFully
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
- データの読込み先のバッファ。- 例外:
NullPointerException
-b
がnull
である場合。EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。
-
readFully
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
- データの読込み先のバッファ。off
- データ配列b
のオフセットを指定するint値。len
- 読み込むバイト数を指定するint。- 例外:
NullPointerException
-b
がnull
である場合。IndexOutOfBoundsException
-off
が負の値の場合、len
が負の値の場合、またはlen
がb.length - off
より大きい場合EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。
-
skipBytes
int skipBytes(int n) throws IOException
入力ストリームからn
バイトをスキップするようにして、スキップしたバイトを破棄します。 ただし、一部の少数のバイト(0バイトも可能)をスキップできます。 このスキップは複数の条件に起因する可能性がありますが、考えられる唯一の場合は、n
バイトがスキップされる前にファイルの終わりに達した場合です。 このメソッドは、EOFException
をスローすることはありません。 スキップされた実際のバイト数が返されます。- パラメータ:
n
- スキップされるバイト数。- 戻り値:
- 実際にスキップしたバイト数。
- 例外:
IOException
- 入出力エラーが発生した場合。
-
readBoolean
boolean readBoolean() throws IOException
1バイトの入力データを読み込んで、そのバイトがゼロ以外の場合はtrue
、そのバイトがゼロの場合はfalse
を返します。 このメソッドは、DataOutput
インタフェースのwriteBoolean
メソッドによって書き込まれたバイトを読み込むのに適しています。- 戻り値:
- 読み込まれた
boolean
の値。 - 例外:
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。
-
readByte
byte readByte() throws IOException
1バイトの入力データを読み込んで返します。 読込み対象バイトは-128
から127
の範囲(上下限値を含む)の符号付きの値として処理されます。 このメソッドは、DataOutput
インタフェースのwriteByte
メソッドによって書き込まれたバイトを読み込むのに適しています。- 戻り値:
- 読み込まれた8ビットの値。
- 例外:
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。
-
readUnsignedByte
int readUnsignedByte() throws IOException
1バイトの入力データを読み込み、int
型にゼロ拡張して、結果を返します。結果はこのため、0
-255
の範囲内になります。DataOutput
インタフェースのwriteByte
メソッドの引数が0
から255
の範囲内の値になるように意図されている場合、このメソッドはwriteByte
メソッドによって書き込まれたバイトを読み込むのに適しています。- 戻り値:
- 読み込まれた符号なし8ビットの値。
- 例外:
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。
-
readShort
short readShort() throws IOException
2バイトの入力データを読み込んで、short
値を返します。a
を読み込まれた1番目のバイト、b
を2番目のバイトとします。 戻り値は次のようになります。
このメソッドは、(short)((a << 8) | (b & 0xff))
DataOutput
インタフェースのwriteShort
メソッドによって書き込まれたバイトを読み込むのに適しています。- 戻り値:
- 読み込まれた16ビットの値。
- 例外:
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。
-
readUnsignedShort
int readUnsignedShort() throws IOException
2バイトの入力データを読み込んで、0
-65535
の範囲のint
値を返します。a
を読み込まれた1番目のバイト、b
を2番目のバイトとします。 戻り値は次のようになります。(((a & 0xff) << 8) | (b & 0xff))
DataOutput
インタフェースのwriteShort
メソッドの引数が0
から65535
の範囲内の値になるように意図されている場合、このメソッドはwriteShort
メソッドによって書き込まれたバイトを読み込むのに適しています。- 戻り値:
- 読み込まれた符号なし16ビットの値。
- 例外:
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。
-
readChar
char readChar() throws IOException
2バイトの入力データを読み込んで、char
値を返します。a
を読み込まれた1番目のバイト、b
を2番目のバイトとします。 戻り値は次のようになります。
このメソッドは、(char)((a << 8) | (b & 0xff))
DataOutput
インタフェースのwriteChar
メソッドによって書き込まれたバイトを読み込むのに適しています。- 戻り値:
- 読み込まれた
char
の値。 - 例外:
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。
-
readInt
int readInt() throws IOException
4バイトの入力データを読み込んで、int
値を返します。a-d
を読み込まれる1から4番目のバイトとします。 戻り値は次のようになります。
このメソッドは、(((a & 0xff) << 24) | ((b & 0xff) << 16) | ((c & 0xff) << 8) | (d & 0xff))
DataOutput
インタフェースのwriteInt
メソッドによって書き込まれたバイトを読み込むのに適しています。- 戻り値:
- 読み込まれた
int
の値。 - 例外:
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。
-
readLong
long readLong() throws IOException
8バイトの入力データを読み込んで、long
値を返します。a-h
を読み込まれる1から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
の値。 - 例外:
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。
-
readFloat
float readFloat() throws IOException
4バイトの入力データを読み込んで、float
値を返します。 これは、最初にreadInt
メソッドとまったく同じ方法でint
値を作成し、このint
値をFloat.intBitsToFloat
メソッドとまったく同じ方法でfloat
に変換することによって行なわれます。 このメソッドは、DataOutput
インタフェースのwriteFloat
メソッドによって書き込まれたバイトを読み込むのに適しています。- 戻り値:
- 読み込まれた
float
の値。 - 例外:
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。
-
readDouble
double readDouble() throws IOException
8バイトの入力データを読み込んで、double
値を返します。 これは、最初にreadLong
メソッドとまったく同じ方法でlong
値を作成し、このlong
値をDouble.longBitsToDouble
メソッドとまったく同じ方法でdouble
に変換することによって行なわれます。 このメソッドは、DataOutput
インタフェースのwriteDouble
メソッドによって書き込まれたバイトを読み込むのに適しています。- 戻り値:
- 読み込まれた
double
の値。 - 例外:
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。
-
readLine
String readLine() throws IOException
入力ストリームから、次の行のテキストを読み込みます。 このメソッドは、行末記号またはファイルの終わりを検出するまで、連続するバイトを読み込んで、各バイトをそれぞれ文字に変換します。読み込まれた文字は次に、String
として返されます。 このメソッドはバイトを処理するものなので、Unicode文字セットの入力を完全にはサポートしません。ファイルの終わりが検出されるまでに1バイトも読み込めなかった場合には、
null
が返されます。 それ以外の場合、読み込まれた各バイトはゼロ拡張によってchar
型に変換されます。 文字'\n'
が検出されると、この文字は破棄され、読込みは中止されます。 文字'\r'
が検出されると、この文字は破棄され、その次のバイトが文字'\n'
に変換されますが、この文字も破棄されて、読込みが中止されます。 文字'\n'
と文字'\r'
のどちらかより前にファイルの終わりが検出されると、読込みが中止されます。 読込みが中止されると、読み込まれて破棄されていないすべての文字を取り込んだ順番で格納しているString
が返されます。 この文字列のそれぞれの文字は\u0100
、つまり(char)256
より小さい値を持ちます。- 戻り値:
- この入力ストリームからの次のテキスト行。ファイルの終わりが検出されるまでに1バイトも読み込めなかった場合は
null
。 - 例外:
IOException
- 入出力エラーが発生した場合。
-
readUTF
String readUTF() throws IOException
修正UTF-8形式でエンコードされた文字列を読み込みます。readUTF
の汎用規約では、修正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
メソッドを使うと、このメソッドで読み込むのに適したデータを書き込むことができます。- 戻り値:
- Unicode文字列。
- 例外:
EOFException
- すべてのバイトを読み込む前に、このストリームの終わりに達した場合。IOException
- 入出力エラーが発生した場合。UTFDataFormatException
- 文字列中のバイトが、有効な修正UTF-8形式でエンコードされた文字列以外であった場合。
-
-