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 對于多線程通路不一定是安全的。 線程安全是可選的,它由此類方法的使用者負責。
字段摘要
從類 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()
參見 DataInput 的 readBoolean 方法的正常協定。
byte readByte()
參見 DataInput 的 readByte 方法的正常協定。
char readChar()
參見 DataInput 的 readChar 方法的正常協定。
double readDouble()
參見 DataInput 的 readDouble 方法的正常協定。
float readFloat()
參見 DataInput 的 readFloat 方法的正常協定。
void readFully(byte[] b)
參見 DataInput 的 readFully 方法的正常協定。
void readFully(byte[] b, int off, int len)
參見 DataInput 的 readFully 方法的正常協定。
int readInt()
參見 DataInput 的 readInt 方法的正常協定。
String readLine()
已過時。 該方法無法将位元組正确轉換為字元。從 JDK 1.1 開始,讀取文本行的首選方法是使用 BufferedReader.readLine() 方法。使用 DataInputStream 類讀取文本行的程式可以改為使用 BufferedReader 類,隻要将以下形式的代碼:
DataInputStream d = new DataInputStream(in);
替換為:
BufferedReader d
= new BufferedReader(new InputStreamReader(in));
long readLong()
參見 DataInput 的 readLong 方法的正常協定。
short readShort()
參見 DataInput 的 readShort 方法的正常協定。
int readUnsignedByte()
參見 DataInput 的 readUnsignedByte 方法的正常協定。
int readUnsignedShort()
參見 DataInput 的 readUnsignedShort 方法的正常協定。
String readUTF()
參見 DataInput 的 readUTF 方法的正常協定。
static String readUTF(DataInput in)
從流 in 中讀取用 UTF-8 修改版格式編碼的 Unicode 字元格式的字元串;然後以 String 形式傳回此字元串。
int skipBytes(int n)
參見 DataInput 的 skipBytes 方法的正常協定。
從類 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 錯誤。
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 - 如果 b 為 null。
IndexOutOfBoundsException - 如果 off 為負,len 為負,或者 len 大于 b.length - off
IOException - 如果不是因為流位于檔案末尾而無法讀取第一個位元組;該流已關閉并且底層輸入流在關閉後不支援讀取操作;發生其他 I/O 錯誤。
readFully
public final void readFully(byte[] b) throws IOException
參見 DataInput 的 readFully 方法的正常協定。
從包含的輸入流中讀取此操作需要的位元組。
指定者:
接口 DataInput 中的 readFully
參數:
b - 存儲讀取資料的緩沖區。
抛出:
EOFException - 如果此輸入流在讀取所有位元組之前到達末尾。
IOException - 該流已關閉并且包含的輸入流在關閉後不支援讀取操作,或者發生其他 I/O 錯誤。
readFully
public final void readFully(byte[] b, int off, int len) throws IOException
參見 DataInput 的 readFully 方法的正常協定。
從包含的輸入流中讀取此操作需要的位元組。
指定者:
接口 DataInput 中的 readFully
參數:
b - 存儲讀取資料的緩沖區。
off - 資料的起始偏移量。
len - 要讀取的位元組數。
抛出:
EOFException - 如果此輸入流在讀取所有位元組之前到達末尾。
IOException - 該流已關閉并且包含的輸入流在關閉後不支援讀取操作,或者發生其他 I/O 錯誤。
skipBytes
public final int skipBytes(int n) throws IOException
參見 DataInput 的 skipBytes 方法的正常協定。
從包含的輸入流中讀取此操作需要的位元組。
指定者:
接口 DataInput 中的 skipBytes
參數:
n - 要跳過的位元組數。
傳回:
實際跳過的位元組數。
抛出:
IOException - 如果包含的輸入流不支援查找操作;該流已關閉并且包含的輸入流在關閉後不支援讀取操作;發生其他 I/O 錯誤。
readBoolean
public final boolean readBoolean() throws IOException
參見 DataInput 的 readBoolean 方法的正常協定。
從包含的輸入流中讀取此操作需要的位元組。
指定者:
接口 DataInput 中的 readBoolean
傳回:
讀取的 boolean 值。
抛出:
EOFException - 如果此輸入流已經到達末尾。
IOException - 該流已關閉并且包含的輸入流在關閉後不支援讀取操作,或者發生另其他 I/O 錯誤。
readByte
public final byte readByte() throws IOException
參見 DataInput 的 readByte 方法的正常協定。
從所包含的輸入流中讀取此操作需要的位元組。
指定者:
接口 DataInput 中的 readByte
傳回:
此輸入流的下一個位元組,以有符号 8 位 byte 的形式表示。
抛出:
EOFException - 如果此輸入流已經到達末尾。
IOException - 該流已關閉并且包含的輸入流在關閉後不支援讀取操作,或者發生其他 I/O 錯誤。
readUnsignedByte
public final int readUnsignedByte() throws IOException
參見 DataInput 的 readUnsignedByte 方法的正常協定。
從包含的輸入流中讀取此操作需要的位元組。
指定者:
接口 DataInput 中的 readUnsignedByte
傳回:
此輸入流的下一個位元組,将它解釋為一個無符号 8 位數。
抛出:
EOFException - 如果此輸入流已經到達末尾。
IOException - 該流已關閉并且包含的輸入流在關閉後不支援讀取操作,或者發生其他 I/O 錯誤。
readShort
public final short readShort() throws IOException
參見 DataInput 的 readShort 方法的正常協定。
從包含的輸入流中讀取此操作需要的位元組。
指定者:
接口 DataInput 中的 readShort
傳回:
此輸入流的下兩個位元組,将它們解釋為一個有符号 16 位數。
抛出:
EOFException - 如果此輸入流在讀取這兩個位元組之前到達末尾。
IOException - 該流已關閉并且包含的輸入流在關閉後不支援讀取操作,或者發生其他 I/O 錯誤。
readUnsignedShort
public final int readUnsignedShort() throws IOException
參見 DataInput 的 readUnsignedShort 方法的正常協定。
從包含的輸入流中讀取此操作需要的位元組。
指定者:
接口 DataInput 中的 readUnsignedShort
傳回:
此輸入流的下兩個位元組,将它們解釋為一個無符号 16 位整數。
抛出:
EOFException - 如果此輸入流在讀取這兩個位元組之前到達末尾。
IOException - 該流已關閉并且包含的輸入流在關閉後不支援讀取操作,或者發生其他 I/O 錯誤。
readChar
public final char readChar() throws IOException
參見 DataInput 的 readChar 方法的正常協定。
從包含的輸入流中讀取此操作需要的位元組。
指定者:
接口 DataInput 中的 readChar
傳回:
此輸入流的下兩個位元組,将它們解釋為一個 char。
抛出:
EOFException - 如果此輸入流在讀取這兩個位元組之前到達末尾。
IOException - 該流已關閉并且包含的輸入流在關閉後不支援讀取操作,或者發生其他 I/O 錯誤。
readInt
public final int readInt() throws IOException
參見 DataInput 的 readInt 方法的正常協定。
從包含的輸入流中讀取此操作需要的位元組。
指定者:
接口 DataInput 中的 readInt
傳回:
此輸入流的下四個位元組,将它們解釋為一個 int。
抛出:
EOFException - 如果此輸入流在讀取這四個位元組之前到達末尾。
IOException - 該流已關閉并且包含的輸入流在關閉後不支援讀取操作,或者發生其他 I/O 錯誤。
readLong
public final long readLong() throws IOException
參見 DataInput 的 readLong 方法的正常協定。
從包含的輸入流中讀取此操作需要的位元組。
指定者:
接口 DataInput 中的 readLong
傳回:
此輸入流的下八個位元組,将它們解釋為一個 long。
抛出:
EOFException - 如果此輸入流在讀取這八個位元組之前到達末尾。
IOException - 該流已關閉并且包含的輸入流在關閉後不支援讀取操作,或者發生其他 I/O 錯誤。
readFloat
public final float readFloat() throws IOException
參見 DataInput 的 readFloat 方法的正常協定。
從包含的輸入流中讀取此操作需要的位元組。
指定者:
接口 DataInput 中的 readFloat
傳回:
此輸入流的下四個位元組,将它們解釋為一個 float。
抛出:
EOFException - 如果此輸入流在讀取這四個位元組之前到達末尾。
IOException - 該流已關閉并且包含的輸入流在關閉後不支援讀取操作,或者發生其他 I/O 錯誤。
readDouble
public final double readDouble() throws IOException
參見 DataInput 的 readDouble 方法的正常協定。
從包含的輸入流中讀取此操作需要的位元組。
指定者:
接口 DataInput 中的 readDouble
傳回:
此輸入流的下八個位元組,将它們解釋為一個 double。
抛出:
EOFException - 如果此輸入流在讀取這八個位元組之前到達末尾。
IOException - 該流已關閉并且包含的輸入流在關閉後不支援讀取操作,或者發生其他 I/O 錯誤。
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));
參見 DataInput 的 readLine 方法的正常協定。
從包含的輸入流中讀取此操作需要的位元組。
指定者:
接口 DataInput 中的 readLine
傳回:
此輸入流中的下一文本行。
抛出:
IOException - 如果發生 I/O 錯誤。
readUTF
public final String readUTF() throws IOException
參見 DataInput 的 readUTF 方法的正常協定。
從包含的輸入流中讀取此操作需要的位元組。
指定者:
接口 DataInput 中的 readUTF
傳回:
一個 Unicode 字元串。
抛出:
EOFException - 如果此輸入流在讀取所有位元組之前到達末尾。
IOException - 該流已關閉并且包含的輸入流在關閉後不支援讀取操作,或者發生其他 I/O 錯誤。
UTFDataFormatException - 如果這些位元組不表示一個有效的、UTF-8 修改版編碼的字元串。
readUTF
public static final String readUTF(DataInput in) throws IOException
從流 in 中讀取用 UTF-8 修改版格式編碼的 Unicode 字元格式的字元串;然後以 String 形式傳回此字元串。UTF-8 修改版表示形式的一些細節與 DataInput 的 readUTF 方法完全相同。
參數:
in - 資料輸入流。
傳回:
一個 Unicode 字元串。
抛出:
EOFException - 如果此輸入流在讀取所有位元組之前到達末尾。
IOException - 該流已關閉并且包含的輸入流在關閉後不支援讀取操作,或者發生其他 I/O 錯誤。
UTFDataFormatException - 如果這些位元組不表示一個有效的、UTF-8 修改版編碼的 Unicode 字元串。