JavaTM 2 Platform
Standard Ed. 6

java.io
類別 DataInputStream

java.lang.Object
  繼承者 java.io.InputStream
      繼承者 java.io.FilterInputStream
          繼承者 java.io.DataInputStream
所有已實作的介面:
Closeable, DataInput

public class DataInputStream
extends FilterInputStream
implements DataInput

資料輸入串流允許應用程序以與機器無關方式從底層輸入串流中讀取基本 Java 資料型別。應用程序可以使用資料輸出串流寫入稍後由資料輸入串流讀取的資料。

DataInputStream 對於多執行緒存取不一定是安全的。 執行緒安全是可選的,它由此類別方法的使用者負責。

從以下版本開始:
JDK1.0
另請參見:
DataOutputStream

欄位摘要
 
從類別 java.io.FilterInputStream 繼承的欄位
in
 
建構子摘要
DataInputStream(InputStream in)
          使用指定的底層 InputStream 創建一個 DataInputStream。
 
方法摘要
 int read(byte[] b)
          從套件含的輸入串流中讀取一定數量的位元組,並將它們存儲到緩衝區陣列 b 中。
 int read(byte[] b, int off, int len)
          從套件含的輸入串流中將最多 len 個位元組讀入一個 byte 陣列中。
 boolean readBoolean()
          參見 DataInputreadBoolean 方法的常規協定。
 byte readByte()
          參見 DataInputreadByte 方法的常規協定。
 char readChar()
          參見 DataInputreadChar 方法的常規協定。
 double readDouble()
          參見 DataInputreadDouble 方法的常規協定。
 float readFloat()
          參見 DataInputreadFloat 方法的常規協定。
 void readFully(byte[] b)
          參見 DataInputreadFully 方法的常規協定。
 void readFully(byte[] b, int off, int len)
          參見 DataInputreadFully 方法的常規協定。
 int readInt()
          參見 DataInputreadInt 方法的常規協定。
 String readLine()
          已過時。 該方法無法將位元組正確轉換為字元。從 JDK 1.1 開始,讀取文本行的首選方法是使用 BufferedReader.readLine() 方法。使用 DataInputStream 類別讀取文本行的程序可以改為使用 BufferedReader 類別,只要將以下形式的程式碼:
     DataInputStream d = new DataInputStream(in);
 
替換為:
     BufferedReader d
          = new BufferedReader(new InputStreamReader(in));
 
 long readLong()
          參見 DataInputreadLong 方法的常規協定。
 short readShort()
          參見 DataInputreadShort 方法的常規協定。
 int readUnsignedByte()
          參見 DataInputreadUnsignedByte 方法的常規協定。
 int readUnsignedShort()
          參見 DataInputreadUnsignedShort 方法的常規協定。
 String readUTF()
          參見 DataInputreadUTF 方法的常規協定。
static String readUTF(DataInput in)
          從串流 in 中讀取用 UTF-8 修改版格式編碼的 Unicode 字元格式的字元串;然後以 String 形式返回此字元串。
 int skipBytes(int n)
          參見 DataInputskipBytes 方法的常規協定。
 
從類別 java.io.FilterInputStream 繼承的方法
available, close, mark, markSupported, read, reset, skip
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

DataInputStream

public DataInputStream(InputStream in)
使用指定的底層 InputStream 創建一個 DataInputStream。

參數:
in - 指定輸入串流
方法詳細資訊

read

public final int read(byte[] b)
               throws IOException
從套件含的輸入串流中讀取一定數量的位元組,並將它們存儲到緩衝區陣列 b 中。以整數形式返回實際讀取的位元組數。在輸入資料可用、檢測到檔案末尾 (end of file) 或拋出異常之前,此方法將一直阻塞。

如果 b 為 null,則拋出 NullPointerException。如果 b 的長度為 0,則不讀取位元組並返回 0;否則,嘗試讀取至少一個位元組。如果因為串流位於檔案末尾而沒有位元組可用,則返回值 -1;否則至少讀取一個位元組並將其存儲到 b 中。

將讀取的第一個位元組存儲到元素 b[0] 中,將下一個位元組存儲到 b[1] 中,依此類別推。讀取的位元組數至多等於 b 的長度。設 k 為實際讀取的位元組數;這些位元組將存儲在從 b[0]b[k-1] 的元素中,b[k]b[b.length-1] 的元素不受影響。

read(b) 方法與以下方法的效果相同:

 read(b, 0, b.length) 
 

覆寫:
類別 FilterInputStream 中的 read
參數:
b - 存儲讀取資料的緩衝區。
返回:
讀入緩衝區的位元組總數;如果因為已經到達串流末尾而沒有更多的資料,則返回 -1
拋出:
IOException - 如果不是因為串流位於檔案末尾而無法讀取第一個位元組;該串流已關閉並且底層輸入串流在關閉後不支持讀取操作;發生其他 I/O 錯誤。
另請參見:
FilterInputStream.in, InputStream.read(byte[], int, int)

read

public final int read(byte[] b,
                      int off,
                      int len)
               throws IOException
從套件含的輸入串流中將最多 len 個位元組讀入一個 byte 陣列中。盡量讀取 len 個位元組,但讀取的位元組數可能少於 len 個,也可能為零。以整數形式返回實際讀取的位元組數。

在輸入資料可用、檢測到檔案末尾或拋出異常之前,此方法將阻塞。

如果 len 為零,則不讀取任何位元組並返回 0;否則,嘗試讀取至少一個位元組。如果因為串流位於檔案未尾而沒有位元組可用,則返回值 -1;否則,至少讀取一個位元組並將其存儲到 b 中。

將讀取的第一個位元組存儲到元素 b[off] 中,將下一個位元組存儲到 b[off+1] 中,依此類別推。讀取的位元組數至多等於 len。設 k 為實際讀取的位元組數;這些位元組將存儲在 b[off]b[off+k-1] 的元素中,b[off+k]b[off+len-1] 的元素不受影響。

在所有情況下,b[0]b[off] 的元素和 b[off+len]b[b.length-1] 的元素都不受影響。

覆寫:
類別 FilterInputStream 中的 read
參數:
b - 存儲讀取資料的緩衝區。
off - 目標陣列 b 中的起始偏移量
len - 讀取的最大位元組數。
返回:
讀入緩衝區的位元組總數;如果因為已經到達串流末尾而沒有更多的資料,則返回 -1
拋出:
NullPointerException - 如果 bnull
IndexOutOfBoundsException - 如果 off 為負,len 為負,或者 len 大於 b.length - off
IOException - 如果不是因為串流位於檔案末尾而無法讀取第一個位元組;該串流已關閉並且底層輸入串流在關閉後不支持讀取操作;發生其他 I/O 錯誤。
另請參見:
FilterInputStream.in, InputStream.read(byte[], int, int)

readFully

public final void readFully(byte[] b)
                     throws IOException
參見 DataInputreadFully 方法的常規協定。

從套件含的輸入串流中讀取此操作需要的位元組。

指定者:
介面 DataInput 中的 readFully
參數:
b - 存儲讀取資料的緩衝區。
拋出:
EOFException - 如果此輸入串流在讀取所有位元組之前到達末尾。
IOException - 該串流已關閉並且包含的輸入串流在關閉後不支持讀取操作,或者發生其他 I/O 錯誤。
另請參見:
FilterInputStream.in

readFully

public final void readFully(byte[] b,
                            int off,
                            int len)
                     throws IOException
參見 DataInputreadFully 方法的常規協定。

從套件含的輸入串流中讀取此操作需要的位元組。

指定者:
介面 DataInput 中的 readFully
參數:
b - 存儲讀取資料的緩衝區。
off - 資料的起始偏移量。
len - 要讀取的位元組數。
拋出:
EOFException - 如果此輸入串流在讀取所有位元組之前到達末尾。
IOException - 該串流已關閉並且包含的輸入串流在關閉後不支持讀取操作,或者發生其他 I/O 錯誤。
另請參見:
FilterInputStream.in

skipBytes

public final int skipBytes(int n)
                    throws IOException
參見 DataInputskipBytes 方法的常規協定。

從套件含的輸入串流中讀取此操作需要的位元組。

指定者:
介面 DataInput 中的 skipBytes
參數:
n - 要跳過的位元組數。
返回:
實際跳過的位元組數。
拋出:
IOException - 如果包含的輸入串流不支持尋找操作;該串流已關閉並且包含的輸入串流在關閉後不支持讀取操作;發生其他 I/O 錯誤。

readBoolean

public final boolean readBoolean()
                          throws IOException
參見 DataInputreadBoolean 方法的常規協定。

從套件含的輸入串流中讀取此操作需要的位元組。

指定者:
介面 DataInput 中的 readBoolean
返回:
讀取的 boolean 值。
拋出:
EOFException - 如果此輸入串流已經到達末尾。
IOException - 該串流已關閉並且包含的輸入串流在關閉後不支持讀取操作,或者發生另其他 I/O 錯誤。
另請參見:
FilterInputStream.in

readByte

public final byte readByte()
                    throws IOException
參見 DataInputreadByte 方法的常規協定。

從所包含的輸入串流中讀取此操作需要的位元組。

指定者:
介面 DataInput 中的 readByte
返回:
此輸入串流的下一個位元組,以有符號 8 位 byte 的形式表示。
拋出:
EOFException - 如果此輸入串流已經到達末尾。
IOException - 該串流已關閉並且包含的輸入串流在關閉後不支持讀取操作,或者發生其他 I/O 錯誤。
另請參見:
FilterInputStream.in

readUnsignedByte

public final int readUnsignedByte()
                           throws IOException
參見 DataInputreadUnsignedByte 方法的常規協定。

從套件含的輸入串流中讀取此操作需要的位元組。

指定者:
介面 DataInput 中的 readUnsignedByte
返回:
此輸入串流的下一個位元組,將它解釋為一個無符號 8 位數。
拋出:
EOFException - 如果此輸入串流已經到達末尾。
IOException - 該串流已關閉並且包含的輸入串流在關閉後不支持讀取操作,或者發生其他 I/O 錯誤。
另請參見:
FilterInputStream.in

readShort

public final short readShort()
                      throws IOException
參見 DataInputreadShort 方法的常規協定。

從套件含的輸入串流中讀取此操作需要的位元組。

指定者:
介面 DataInput 中的 readShort
返回:
此輸入串流的下兩個位元組,將它們解釋為一個有符號 16 位數。
拋出:
EOFException - 如果此輸入串流在讀取這兩個位元組之前到達末尾。
IOException - 該串流已關閉並且包含的輸入串流在關閉後不支持讀取操作,或者發生其他 I/O 錯誤。
另請參見:
FilterInputStream.in

readUnsignedShort

public final int readUnsignedShort()
                            throws IOException
參見 DataInputreadUnsignedShort 方法的常規協定。

從套件含的輸入串流中讀取此操作需要的位元組。

指定者:
介面 DataInput 中的 readUnsignedShort
返回:
此輸入串流的下兩個位元組,將它們解釋為一個無符號 16 位整數。
拋出:
EOFException - 如果此輸入串流在讀取這兩個位元組之前到達末尾。
IOException - 該串流已關閉並且包含的輸入串流在關閉後不支持讀取操作,或者發生其他 I/O 錯誤。
另請參見:
FilterInputStream.in

readChar

public final char readChar()
                    throws IOException
參見 DataInputreadChar 方法的常規協定。

從套件含的輸入串流中讀取此操作需要的位元組。

指定者:
介面 DataInput 中的 readChar
返回:
此輸入串流的下兩個位元組,將它們解釋為一個 char
拋出:
EOFException - 如果此輸入串流在讀取這兩個位元組之前到達末尾。
IOException - 該串流已關閉並且包含的輸入串流在關閉後不支持讀取操作,或者發生其他 I/O 錯誤。
另請參見:
FilterInputStream.in

readInt

public final int readInt()
                  throws IOException
參見 DataInputreadInt 方法的常規協定。

從套件含的輸入串流中讀取此操作需要的位元組。

指定者:
介面 DataInput 中的 readInt
返回:
此輸入串流的下四個位元組,將它們解釋為一個 int
拋出:
EOFException - 如果此輸入串流在讀取這四個位元組之前到達末尾。
IOException - 該串流已關閉並且包含的輸入串流在關閉後不支持讀取操作,或者發生其他 I/O 錯誤。
另請參見:
FilterInputStream.in

readLong

public final long readLong()
                    throws IOException
參見 DataInputreadLong 方法的常規協定。

從套件含的輸入串流中讀取此操作需要的位元組。

指定者:
介面 DataInput 中的 readLong
返回:
此輸入串流的下八個位元組,將它們解釋為一個 long
拋出:
EOFException - 如果此輸入串流在讀取這八個位元組之前到達末尾。
IOException - 該串流已關閉並且包含的輸入串流在關閉後不支持讀取操作,或者發生其他 I/O 錯誤。
另請參見:
FilterInputStream.in

readFloat

public final float readFloat()
                      throws IOException
參見 DataInputreadFloat 方法的常規協定。

從套件含的輸入串流中讀取此操作需要的位元組。

指定者:
介面 DataInput 中的 readFloat
返回:
此輸入串流的下四個位元組,將它們解釋為一個 float
拋出:
EOFException - 如果此輸入串流在讀取這四個位元組之前到達末尾。
IOException - 該串流已關閉並且包含的輸入串流在關閉後不支持讀取操作,或者發生其他 I/O 錯誤。
另請參見:
readInt(), Float.intBitsToFloat(int)

readDouble

public final double readDouble()
                        throws IOException
參見 DataInputreadDouble 方法的常規協定。

從套件含的輸入串流中讀取此操作需要的位元組。

指定者:
介面 DataInput 中的 readDouble
返回:
此輸入串流的下八個位元組,將它們解釋為一個 double
拋出:
EOFException - 如果此輸入串流在讀取這八個位元組之前到達末尾。
IOException - 該串流已關閉並且包含的輸入串流在關閉後不支持讀取操作,或者發生其他 I/O 錯誤。
另請參見:
readLong(), Double.longBitsToDouble(long)

readLine

@Deprecated
public final String readLine()
                      throws IOException
已過時。 該方法無法將位元組正確轉換為字元。從 JDK 1.1 開始,讀取文本行的首選方法是使用 BufferedReader.readLine() 方法。使用 DataInputStream 類別讀取文本行的程序可以改為使用 BufferedReader 類別,只要將以下形式的程式碼:
     DataInputStream d = new DataInputStream(in);
 
替換為:
     BufferedReader d
          = new BufferedReader(new InputStreamReader(in));
 

參見 DataInputreadLine 方法的常規協定。

從套件含的輸入串流中讀取此操作需要的位元組。

指定者:
介面 DataInput 中的 readLine
返回:
此輸入串流中的下一文本行。
拋出:
IOException - 如果發生 I/O 錯誤。
另請參見:
BufferedReader.readLine(), FilterInputStream.in

readUTF

public final String readUTF()
                     throws IOException
參見 DataInputreadUTF 方法的常規協定。

從套件含的輸入串流中讀取此操作需要的位元組。

指定者:
介面 DataInput 中的 readUTF
返回:
一個 Unicode 字元串。
拋出:
EOFException - 如果此輸入串流在讀取所有位元組之前到達末尾。
IOException - 該串流已關閉並且包含的輸入串流在關閉後不支持讀取操作,或者發生其他 I/O 錯誤。
UTFDataFormatException - 如果這些位元組不表示一個有效的、UTF-8 修改版編碼的字元串。
另請參見:
readUTF(java.io.DataInput)

readUTF

public static final String readUTF(DataInput in)
                            throws IOException
從串流 in 中讀取用 UTF-8 修改版格式編碼的 Unicode 字元格式的字元串;然後以 String 形式返回此字元串。UTF-8 修改版表示形式的一些細節與 DataInputreadUTF 方法完全相同。

參數:
in - 資料輸入串流。
返回:
一個 Unicode 字元串。
拋出:
EOFException - 如果此輸入串流在讀取所有位元組之前到達末尾。
IOException - 該串流已關閉並且包含的輸入串流在關閉後不支持讀取操作,或者發生其他 I/O 錯誤。
UTFDataFormatException - 如果這些位元組不表示一個有效的、UTF-8 修改版編碼的 Unicode 字元串。
另請參見:
readUnsignedShort()

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only