鴻蒙OS DataInputStream

2022-10-18 17:27 更新

DataInputStream

java.lang.Object

|---java.io.InputStream

|---|---java.io.FilterInputStream

|---|---|---java.io.DataInputStream

public class DataInputStream
extends FilterInputStream
implements DataInput

數(shù)據(jù)輸入流允許應(yīng)用程序以與機器無關(guān)的方式從底層輸入流中讀取原始 Java 數(shù)據(jù)類型。 應(yīng)用程序使用數(shù)據(jù)輸出流寫入數(shù)據(jù),這些數(shù)據(jù)稍后可以由數(shù)據(jù)輸入流讀取。

DataInputStream 對于多線程訪問不一定是安全的。 線程安全是可選的,并且是此類中方法的用戶的責(zé)任。

Since:

JDK1.0

字段摘要

從類 java.io.FilterInputStream 繼承的字段
in

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
DataInputStream(InputStream in) 創(chuàng)建一個使用指定基礎(chǔ) InputStream 的 DataInputStream。

方法總結(jié)

修飾符和類型 方法 描述
int read(byte[] b) 從包含的輸入流中讀取一些字節(jié)并將它們存儲到緩沖區(qū)數(shù)組中 b。
int read(byte[] b, int off, int len) 從包含的輸入流中讀取最多 len 個字節(jié)的數(shù)據(jù)到一個字節(jié)數(shù)組中。
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() 已棄用。 此方法不能正確地將字節(jié)轉(zhuǎn)換為字符。 從 JDK 1.1 開始,讀取文本行的首選方法是通過 BufferedReader.readLine() 方法。 使用 DataInputStream 類讀取行的程序可以通過替換形式的代碼轉(zhuǎn)換為使用 BufferedReader 類
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) 從流中讀取以修改的 UTF-8 格式編碼的 Unicode 字符串的表示形式; 然后這個字符串作為字符串返回。
int skipBytes(int n) 請參閱 DataInput 的 skipBytes 方法的一般協(xié)定。
從類 java.io.FilterInputStream 繼承的方法
available, close, mark, markSupported, read, reset, skip
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

構(gòu)造函數(shù)詳細信息

DataInputStream

public DataInputStream(InputStream in)

創(chuàng)建一個使用指定基礎(chǔ) InputStream 的 DataInputStream。

參數(shù):

參數(shù)名稱 參數(shù)描述
in 指定的輸入流

方法詳情

read

public final int read(byte[] b) throws IOException

從包含的輸入流中讀取一些字節(jié)并將它們存儲到緩沖區(qū)數(shù)組中 b。 實際讀取的字節(jié)數(shù)以整數(shù)形式返回。 在輸入數(shù)據(jù)可用、檢測到文件結(jié)尾或引發(fā)異常之前,此方法會一直阻塞。

如果 b 為 null,則拋出 NullPointerException。 如果 b 的長度為零,則不讀取任何字節(jié)并返回 0; 否則,將嘗試讀取至少一個字節(jié)。 如果由于流位于文件末尾而沒有可用字節(jié),則返回值 -1; 否則,至少讀取一個字節(jié)并將其存儲到 b 中。

讀取的第一個字節(jié)存儲在元素 b[0] 中,下一個字節(jié)存儲在 b[1] 中,依此類推。 讀取的字節(jié)數(shù)最多等于 b 的長度。 設(shè) k 為實際讀取的字節(jié)數(shù); 這些字節(jié)將存儲在元素 b[0] 到 b[k-1] 中,而元素 b[k] 到 b[b.length-1] 不受影響。

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

 read(b, 0, b.length) 

覆蓋:

讀入類 FilterInputStream

參數(shù):

參數(shù)名稱 參數(shù)描述
b 讀取數(shù)據(jù)的緩沖區(qū)。

返回:

讀入緩沖區(qū)的總字節(jié)數(shù),如果由于到達流的末尾而沒有更多數(shù)據(jù),則為 -1。

Throws:

Throw名稱 Throw描述
IOException 如果第一個字節(jié)由于文件結(jié)尾以外的任何原因無法讀取,則流已關(guān)閉并且底層輸入流不支持關(guān)閉后讀取,或者發(fā)生另一個 I/O 錯誤。

read

public final int read(byte[] b, int off, int len) throws IOException

從包含的輸入流中讀取最多 len 個字節(jié)的數(shù)據(jù)到一個字節(jié)數(shù)組中。嘗試讀取多達 len 個字節(jié),但可能會讀取較小的字節(jié)數(shù),可能為零。實際讀取的字節(jié)數(shù)以整數(shù)形式返回。

在輸入數(shù)據(jù)可用、檢測到文件結(jié)尾或引發(fā)異常之前,此方法會一直阻塞。

如果 len 為零,則不讀取任何字節(jié)并返回 0;否則,將嘗試讀取至少一個字節(jié)。如果由于流位于文件末尾而沒有可用字節(jié),則返回值 -1;否則,至少讀取一個字節(jié)并將其存儲到 b 中。

讀取的第一個字節(jié)存儲在元素 b[off] 中,下一個字節(jié)存儲在 b[off+1] 中,依此類推。讀取的字節(jié)數(shù)最多等于 len。設(shè) k 為實際讀取的字節(jié)數(shù);這些字節(jié)將存儲在元素 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

參數(shù):

參數(shù)名稱 參數(shù)描述
b 讀取數(shù)據(jù)的緩沖區(qū)。
off 目標(biāo)數(shù)組 b 中的起始偏移量
len 讀取的最大字節(jié)數(shù)。

返回:

讀入緩沖區(qū)的總字節(jié)數(shù),如果由于到達流的末尾而沒有更多數(shù)據(jù),則為 -1。

Throws:

Throw名稱 Throw描述
NullPointerException 如果 b 為空。
IndexOutOfBoundsException 如果 off 為負數(shù),len 為負數(shù),或者 len 大于 b.length - off
IOException 如果第一個字節(jié)由于文件結(jié)尾以外的任何原因無法讀取,則流已關(guān)閉并且底層輸入流不支持關(guān)閉后讀取,或者發(fā)生另一個 I/O 錯誤。

readFully

public final void readFully(byte[] b) throws IOException

請參閱 DataInput 的 readFully 方法的一般約定。

此操作的字節(jié)從包含的輸入流中讀取。

指定者:

接口 DataInput 中的 readFully

參數(shù):

參數(shù)名稱 參數(shù)描述
b 讀取數(shù)據(jù)的緩沖區(qū)。

Throws:

Throw名稱 Throw描述
EOFException 如果此輸入流在讀取所有字節(jié)之前到達末尾。
IOException 流已關(guān)閉且包含的輸入流不支持關(guān)閉后讀取,或發(fā)生另一個 I/O 錯誤。

readFully

public final void readFully(byte[] b, int off, int len) throws IOException

請參閱 DataInput 的 readFully 方法的一般約定。

此操作的字節(jié)從包含的輸入流中讀取。

指定者:

接口 DataInput 中的 readFully

參數(shù):

參數(shù)名稱 參數(shù)描述
b 讀取數(shù)據(jù)的緩沖區(qū)。
off 數(shù)據(jù)的起始偏移量。
len 要讀取的字節(jié)數(shù)。

Throws:

Throw名稱 Throw描述
EOFException 如果此輸入流在讀取所有字節(jié)之前到達末尾。
IOException 流已關(guān)閉且包含的輸入流不支持關(guān)閉后讀取,或發(fā)生另一個 I/O 錯誤。

skipBytes

public final int skipBytes(int n) throws IOException

請參閱 DataInput 的 skipBytes 方法的一般協(xié)定。

此操作的字節(jié)從包含的輸入流中讀取。

指定者:

接口 DataInput 中的 skipBytes

參數(shù):

參數(shù)名稱 參數(shù)描述
n 要跳過的字節(jié)數(shù)。

返回:

跳過的實際字節(jié)數(shù)。

Throws:

Throw名稱 Throw描述
IOException 如果包含的輸入流不支持查找,或者流已經(jīng)關(guān)閉并且包含的輸入流不支持關(guān)閉后的讀取,或者發(fā)生另一個 I/O 錯誤。

readBoolean

public final boolean readBoolean() throws IOException

請參閱 DataInput 的 readBoolean 方法的一般約定。

此操作的字節(jié)從包含的輸入流中讀取。

指定者:

接口 DataInput 中的 readBoolean

返回:

讀取的布爾值。

Throws:

Throw名稱 Throw描述
EOFException 如果這個輸入流已經(jīng)結(jié)束。
IOException 流已關(guān)閉且包含的輸入流不支持關(guān)閉后讀取,或發(fā)生另一個 I/O 錯誤。

readByte

public final byte readByte() throws IOException

請參閱 DataInput 的 readByte 方法的一般約定。

此操作的字節(jié)從包含的輸入流中讀取。

指定者:

接口 DataInput 中的 readByte

返回:

此輸入流的下一個字節(jié)為有符號的 8 位字節(jié)。

Throws:

Throw名稱 Throw描述
EOFException 如果這個輸入流已經(jīng)結(jié)束。
IOException 流已關(guān)閉且包含的輸入流不支持關(guān)閉后讀取,或發(fā)生另一個 I/O 錯誤。

readUnsignedByte

public final int readUnsignedByte() throws IOException

請參閱 DataInput 的 readUnsignedByte 方法的一般約定。

此操作的字節(jié)從包含的輸入流中讀取。

指定者:

接口 DataInput 中的 readUnsignedByte

返回:

此輸入流的下一個字節(jié),解釋為無符號 8 位數(shù)。

Throws:

Throw名稱 Throw描述
EOFException 如果這個輸入流已經(jīng)結(jié)束。
IOException 流已關(guān)閉且包含的輸入流不支持關(guān)閉后讀取,或發(fā)生另一個 I/O 錯誤。

readShort

public final short readShort() throws IOException

請參閱 DataInput 的 readShort 方法的一般約定。

此操作的字節(jié)從包含的輸入流中讀取。

指定者:

接口 DataInput 中的 readShort

返回:

此輸入流的下兩個字節(jié),解釋為帶符號的 16 位數(shù)。

Throws:

Throw名稱 Throw描述
EOFException 如果此輸入流在讀取兩個字節(jié)之前到達末尾。
IOException 流已關(guān)閉且包含的輸入流不支持關(guān)閉后讀取,或發(fā)生另一個 I/O 錯誤。

readUnsignedShort

public final int readUnsignedShort() throws IOException

請參閱 DataInput 的 readUnsignedShort 方法的一般約定。

此操作的字節(jié)從包含的輸入流中讀取。

指定者:

接口 DataInput 中的 readUnsignedShort

返回:

此輸入流的下兩個字節(jié),解釋為無符號 16 位整數(shù)。

Throws:

Throw名稱 Throw描述
EOFException 如果此輸入流在讀取兩個字節(jié)之前到達末尾。
IOException 流已關(guān)閉且包含的輸入流不支持關(guān)閉后讀取,或發(fā)生另一個 I/O 錯誤。

readChar

public final char readChar() throws IOException

請參閱 DataInput 的 readChar 方法的一般約定。

此操作的字節(jié)從包含的輸入流中讀取。

指定者:

接口 DataInput 中的 readChar

返回:

此輸入流的下兩個字節(jié),解釋為 char。

Throws:

Throw名稱 Throw描述
EOFException 如果此輸入流在讀取兩個字節(jié)之前到達末尾。
IOException 流已關(guān)閉且包含的輸入流不支持關(guān)閉后讀取,或發(fā)生另一個 I/O 錯誤。

readInt

public final int readInt() throws IOException

請參閱 DataInput 的 readInt 方法的一般約定。

此操作的字節(jié)從包含的輸入流中讀取。

指定者:

接口 DataInput 中的 readInt

返回:

此輸入流的下四個字節(jié),解釋為 int。

Throws:

Throw名稱 Throw描述
EOFException 如果此輸入流在讀取四個字節(jié)之前到達末尾。
IOException 流已關(guān)閉且包含的輸入流不支持關(guān)閉后讀取,或發(fā)生另一個 I/O 錯誤。

readLong

public final long readLong() throws IOException

請參閱 DataInput 的 readLong 方法的一般約定。

此操作的字節(jié)從包含的輸入流中讀取。

指定者:

接口 DataInput 中的 readLong

返回:

此輸入流的接下來的 8 個字節(jié),解釋為 long。

Throws:

Throw名稱 Throw描述
EOFException 如果此輸入流在讀取八個字節(jié)之前到達末尾。
IOException 流已關(guān)閉且包含的輸入流不支持關(guān)閉后讀取,或發(fā)生另一個 I/O 錯誤。

readFloat

public final float readFloat() throws IOException

請參閱 DataInput 的 readFloat 方法的一般約定。

此操作的字節(jié)從包含的輸入流中讀取。

指定者:

接口 DataInput 中的 readFloat

返回:

此輸入流的下四個字節(jié),解釋為浮點數(shù)。

Throws:

Throw名稱 Throw描述
EOFException 如果此輸入流在讀取四個字節(jié)之前到達末尾。
IOException 流已關(guān)閉且包含的輸入流不支持關(guān)閉后讀取,或發(fā)生另一個 I/O 錯誤。

readDouble

public final double readDouble() throws IOException

請參閱 DataInput 的 readDouble 方法的一般約定。

此操作的字節(jié)從包含的輸入流中讀取。

指定者:

接口 DataInput 中的 readDouble

返回:

此輸入流的接下來的八個字節(jié),解釋為雙精度。

Throws:

Throw名稱 Throw描述
EOFException 如果此輸入流在讀取八個字節(jié)之前到達末尾。
IOException 流已關(guān)閉且包含的輸入流不支持關(guān)閉后讀取,或發(fā)生另一個 I/O 錯誤。

readLine

@Deprecated public final String readLine() throws IOException

已棄用。 此方法不能正確地將字節(jié)轉(zhuǎn)換為字符。 從 JDK 1.1 開始,讀取文本行的首選方法是通過 BufferedReader.readLine() 方法。 使用 DataInputStream 類讀取行的程序可以通過替換形式的代碼轉(zhuǎn)換為使用 BufferedReader 類:

     DataInputStream d = new DataInputStream(in); 

with:

     BufferedReader d
          = new BufferedReader(new InputStreamReader(in));

請參閱 DataInput 的 readLine 方法的一般約定。

此操作的字節(jié)從包含的輸入流中讀取。

指定者:

接口 DataInput 中的 readLine

返回:

此輸入流中的下一行文本。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。

readUTF

public final String readUTF() throws IOException

請參閱 DataInput 的 readUTF 方法的一般約定。

此操作的字節(jié)從包含的輸入流中讀取。

指定者:

接口 DataInput 中的 readUTF

返回:

一個 Unicode 字符串。

Throws:

Throw名稱 Throw描述
EOFException 如果此輸入流在讀取所有字節(jié)之前到達末尾。
IOException 流已關(guān)閉且包含的輸入流不支持關(guān)閉后讀取,或發(fā)生另一個 I/O 錯誤。
UTFDataFormatException 如果字節(jié)不代表字符串的有效修改 UTF-8 編碼。

readUTF

public static final String readUTF(DataInput in) throws IOException

從流中讀取以修改的 UTF-8 格式編碼的 Unicode 字符串的表示形式; 然后這個字符串作為字符串返回。 修改后的 UTF-8 表示的細節(jié)與 DataInput 的 readUTF 方法完全相同。

參數(shù):

參數(shù)名稱 參數(shù)描述
in 一個數(shù)據(jù)輸入流。

返回:

一個 Unicode 字符串。

Throws:

Throw名稱 Throw描述
EOFException 如果輸入流在所有字節(jié)之前到達末尾。
IOException 流已關(guān)閉且包含的輸入流不支持關(guān)閉后讀取,或發(fā)生另一個 I/O 錯誤。
UTFDataFormatException 如果字節(jié)不代表 Unicode 字符串的有效修改 UTF-8 編碼。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號