JavaTM 2
Platform
Std. Ed. v1.4.0

java.io
インタフェース DataInput

既知のサブインタフェースの一覧:
ImageInputStream, ImageOutputStream, ObjectInput
既知の実装クラスの一覧:
DataInputStream, ImageInputStreamImpl, ImageOutputStreamImpl, ObjectInputStream, RandomAccessFile

public interface DataInput

バイナリストリームからバイトを読み込み、そこから Java のプリミティブ型のどれかでデータを再作成するために提供されています。また、Java の修正 UTF-8 形式のデータから String を再作成する機能もあります。

このインタフェースのすべての読み込みルーチンでは、必要なバイト数が読み込まれる前にファイルの終わりに達した場合は、通常、EOFException (IOException の一種) がスローされます。ファイルの終わりに達したという以外の理由でバイトの読み込みに失敗した場合は、EOFException 以外の IOException がスローされます。特に、入力ストリームが閉じられていると、IOException がスローされます。

導入されたバージョン:
JDK1.0
関連項目:
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 バイトの入力データを読み込んで、065535 の範囲の int 値を返します。
 String readUTF()
          修正 UTF-8 形式でコード化された文字列を読み込みます。
 int skipBytes(int n)
          入力ストリームから n バイトをスキップするようにして、スキップしたバイトを破棄します。
 

メソッドの詳細

readFully

public void readFully(byte[] b)
               throws IOException
入力ストリームからいくつかのバイトを読み込んで、バッファ配列 b に格納します。読み込まれるバイト数は b の長さに一致します。

このメソッドは、以下の条件の 1 つが発生するまでブロックします。

bnull の場合、NullPointerException がスローされます。b.length がゼロの場合、読み込まれるデータはありません。そうでない場合、読み込まれる最初のバイトは要素 b[0] に、次のバイトは要素 b[1] にと順次格納されていきます。このメソッドから例外がスローされると、b のすべてではないにしても一部のバイトが入力ストリームのデータで更新されています。

パラメータ:
b - データの読み込み先のバッファ
例外:
EOFException - すべてのバイトを読み込む前に、このストリームの終わりに達した場合
IOException - 入出力エラーが発生した場合

readFully

public void readFully(byte[] b,
                      int off,
                      int len)
               throws IOException
入力ストリームから len バイトを読み込みます。

このメソッドは、以下の条件の 1 つが発生するまでブロックします。

bnull の場合、NullPointerException がスローされます。off が負の値の場合、len が負の値の場合、あるいは off+len が配列 b の長さよりも大きい場合、IndexOutOfBoundsException がスローされます。len がゼロの場合、読み込まれるバイトはありません。そうでない場合、読み込まれる最初のバイトは要素 b[off] に、次のバイトは要素 b[off+1] にと順次格納されていきます。読み込まれるバイト数は、最大でも len までです。

パラメータ:
b - データの読み込み先のバッファ
off - データへのオフセットを指定する int
len - 読み込むバイト数を指定する int
例外:
EOFException - すべてのバイトを読み込む前に、このストリームの終わりに達した場合
IOException - 入出力エラーが発生した場合

skipBytes

public int skipBytes(int n)
              throws IOException
入力ストリームから n バイトをスキップするようにして、スキップしたバイトを破棄します。ただし、n より少ないバイト数 (ゼロの場合もある) しかスキップしない場合もあります。これは、いくつかの条件のうちの 1 つに該当した場合に発生します。n バイトをスキップする前にファイルの終わりに達してしまった場合もその 1 つです。このメソッドが EOFException をスローすることはありません。スキップされた実際のバイト数が返されます。

パラメータ:
n - スキップするバイト数
戻り値:
実際にスキップしたバイト数
例外:
IOException - 入出力エラーが発生した場合

readBoolean

public boolean readBoolean()
                    throws IOException
1 バイトの入力データを読み込んで、そのバイトがゼロ以外の場合は true、そのバイトがゼロの場合は false を返します。このメソッドは、DataOutput インタフェースの writeBoolean メソッドが書き込むバイトを読み込むのに適しています。

戻り値:
読み込まれた boolean の値
例外:
EOFException - すべてのバイトを読み込む前に、このストリームの終わりに達した場合
IOException - 入出力エラーが発生した場合

readByte

public byte readByte()
              throws IOException
1 バイトの入力データを読み込んで返します。読み込み対象バイトは -128127 の範囲 (上下限値を含む) の符号付きの値として処理されます。このメソッドは、DataOutput インタフェースの writeByte メソッドによって書き込まれたバイトを読み込むのに適しています。

戻り値:
読み込まれた 8 ビットの値
例外:
EOFException - すべてのバイトを読み込む前に、このストリームの終わりに達した場合
IOException - 入出力エラーが発生した場合

readUnsignedByte

public int readUnsignedByte()
                     throws IOException
1 バイトの入力データを読み込んで、int 型にゼロ拡張して結果を返します。結果はこのため、0255 の範囲内になります。DataOutput インタフェースの writeByte メソッドの引数がこの範囲内の値になるように意図されている場合、このメソッドは writeByte メソッドによって書き込まれたバイトを読み込むのに適しています。

戻り値:
読み込まれた符号なし 8 ビットの値
例外:
EOFException - すべてのバイトを読み込む前に、このストリームの終わりに達した場合
IOException - 入出力エラーが発生した場合

readShort

public short readShort()
                throws IOException
2 バイトの入力データを読み込んで、short 値を返します。a を 1 番目のバイト、b を 2 番目のバイトとすると、戻り値は次のようになります。

(short)((a << 8) * | (b & 0xff))
 
このメソッドは、DataOutput インタフェースの writeShort メソッドによって書き込まれたバイトを読み込むのに適しています。

戻り値:
読み込まれた 16 ビットの値
例外:
EOFException - すべてのバイトを読み込む前に、このストリームの終わりに達した場合
IOException - 入出力エラーが発生した場合

readUnsignedShort

public int readUnsignedShort()
                      throws IOException
2 バイトの入力データを読み込んで、065535 の範囲の int 値を返します。a を 1 番目のバイト、b を 2 番目のバイトとすると、戻り値は次のようになります。

(((a & 0xff) << 8) | (b & 0xff))
 
DataOutput インタフェースの writeShort メソッドの引数が 065535 の範囲の値になるように意図されている場合、このメソッドは writeShort メソッドによって書き込まれたバイトを読み込むのに適しています。

戻り値:
読み込まれた符号なし 16 ビットの値
例外:
EOFException - すべてのバイトを読み込む前に、このストリームの終わりに達した場合
IOException - 入出力エラーが発生した場合

readChar

public char readChar()
              throws IOException
入力データの char を読み込んで、char 値を返します。Unicode char は 2 バイトから構成されます。a を 1 番目のバイト、b を 2 番目のバイトとすると、戻り値は次のようになります。

(char)((a << 8) | (b & 0xff))
 
このメソッドは、DataOutput インタフェースの writeChar メソッドによって書き込まれたバイトを読み込むのに適しています。

戻り値:
読み込まれた Unicode char の値
例外:
EOFException - すべてのバイトを読み込む前に、このストリームの終わりに達した場合
IOException - 入出力エラーが発生した場合

readInt

public int readInt()
            throws IOException
4 バイトの入力データを読み込んで、int 値を返します。a を 1 番目、b を 2 番目、c を 3 番目、d を 4 番目のバイトとすると、戻り値は次のようになります。

 
 (((a & 0xff) << 24) | ((b & 0xff) << 16) |
  ((c & 0xff) << 8) | (d & 0xff))
 
このメソッドは、DataOutput インタフェースの writeInt メソッドによって書き込まれたバイトを読み込むのに適しています。

戻り値:
読み込まれた int の値
例外:
EOFException - すべてのバイトを読み込む前に、このストリームの終わりに達した場合
IOException - 入出力エラーが発生した場合

readLong

public long readLong()
              throws IOException
8 バイトの入力データを読み込んで、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 の値
例外:
EOFException - すべてのバイトを読み込む前に、このストリームの終わりに達した場合
IOException - 入出力エラーが発生した場合

readFloat

public float readFloat()
                throws IOException
4 バイトの入力データを読み込んで、float 値を返します。このためには、まず readInt メソッドとまったく同じ方法で int 値を作成し、次にこの int 値を Float.intBitsToFloat メソッドとまったく同じ方法で float に変換します。このメソッドは、DataOutput インタフェースの writeFloat メソッドによって書き込まれたバイトを読み込むのに適しています。

戻り値:
読み込まれた float の値
例外:
EOFException - すべてのバイトを読み込む前に、このストリームの終わりに達した場合
IOException - 入出力エラーが発生した場合

readDouble

public double readDouble()
                  throws IOException
8 バイトの入力データを読み込んで、double 値を返します。このためには、まず readlong メソッドとまったく同じ方法で long 値を作成し、次にこの long 値を Double.longBitsToDouble メソッドとまったく同じ方法で double に変換します。このメソッドは、DataOutput インタフェースの writeDouble メソッドによって書き込まれたバイトを読み込むのに適しています。

戻り値:
読み込まれた double の値
例外:
EOFException - すべてのバイトを読み込む前に、このストリームの終わりに達した場合
IOException - 入出力エラーが発生した場合

readLine

public String readLine()
                throws IOException
入力ストリームから、次の行のテキストを読み込みます。このメソッドは、行末記号またはファイルの終わりを検出するまで、連続するバイトを読み込んで、各バイトをそれぞれ文字に変換します。読み込まれた文字は次に、String として返されます。このメソッドはバイトを処理するものなので、Unicode 文字セットの入力を完全にはサポートしません。

ファイルの終わりが検出されるまでに 1 バイトも読み込めなかった場合には、null が返されます。そうでない場合、読み込まれた各バイトはゼロ拡張によって char 型に変換されます。文字 '¥n' が検出されると、この文字は破棄され、読み込みは中止されます。文字 '¥r' が検出されると、この文字は破棄され、その次のバイトが文字 '¥n' に変換されますが、この文字も破棄されて、読み込みが中止されます。文字 '¥n' と文字 '¥r' のどちらかより前にファイルの終わりが検出されると、読み込みが中止されます。読み込みが中止されると、読み込まれて破棄されていないすべての文字を取り込んだ順番で格納している String が返されます。この文字列のそれぞれの文字は \u0100、つまり (char)256 より小さい値を持ちます。

戻り値:
この入力ストリームからの次のテキスト行。ファイルの終わりが検出されるまでに 1 バイトも読み込めなかった場合は null
例外:
IOException - 入出力エラーが発生した場合

readUTF

public String readUTF()
               throws IOException
修正 UTF-8 形式でコード化された文字列を読み込みます。readUTF の汎用規約では、Java の修正 UTF-8 形式でコード化された Unicode 文字列の表現を読み込みます。読み込まれた文字列は、String として返されます。

まず、2 バイトを読み込み、それを使って readUnsignedShort メソッドとまったく同じ方法で符号なし 16 ビット整数を作成します。この整数値は「UTF 長」と呼ばれ、読み込まれる追加のバイト数を表します。次に、このバイトがグループ単位で文字に変換されます。各グループの長さは、グループの先頭バイトの値から計算されます。グループに後続のバイトがあれば、それは次のグループの先頭バイトです。

グループの先頭バイトがビットパターンの 0xxxxxxx (ただし、x0 または 1 を意味する) に一致する場合、グループはそのバイトだけで構成されます。バイトはゼロ拡張されて単一の文字を表現します。

グループの先頭バイトがビットパターン 110xxxxx に一致する場合、そのグループはそのバイト a と 2 番目のバイト b から構成されます。バイト b が存在しない場合 (バイト a が読み込まれた一連のバイトの最後のものだった場合) や、バイト b がビットパターン 10xxxxxx に一致しない場合には、UTFDataFormatException がスローされます。そうでない場合、グループは次の文字に変換されます。

(char)(((a& 0x1F) << 6) | (b & 0x3F))
 
グループの先頭バイトがビットパターン 1110xxxx に一致する場合、そのグループは先頭バイト a に加えて、2 つのバイト bc から構成されます。バイト 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 形式でコード化された文字列以外であった場合

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.