日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSDataInput

DataInput

public interface DataInput

DataInput 接口提供從二進(jìn)制流中讀取字節(jié)并從中重建任何 Java 原始類型的數(shù)據(jù)。 還有一種工具可以從修改后的 UTF-8 格式的數(shù)據(jù)中重建字符串。

對(duì)于該接口中的所有讀取例程,通常情況下,如果在讀取所需字節(jié)數(shù)之前到達(dá)文件末尾,則會(huì)拋出 EOFException(這是一種 IOException)。 如果由于文件結(jié)尾以外的任何原因無法讀取任何字節(jié),則拋出除 EOFException 之外的 IOException。 特別是,如果輸入流已關(guān)閉,則可能會(huì)引發(fā) IOException。

修改后的 UTF-8

DataInput 和 DataOutput 接口的實(shí)現(xiàn)以對(duì) UTF-8 稍作修改的格式表示 Unicode 字符串。 (有關(guān)標(biāo)準(zhǔn) UTF-8 格式的信息,請(qǐng)參閱 Unicode 標(biāo)準(zhǔn)版本 4.0 的第 3.9 節(jié) Unicode 編碼形式)。 請(qǐng)注意,在下表中,最高有效位出現(xiàn)在最左側(cè)的列中。

此格式與標(biāo)準(zhǔn) UTF-8 格式的區(qū)別如下:

  • 空字節(jié) '\u0000' 以 2 字節(jié)格式而不是 1 字節(jié)編碼,因此編碼的字符串永遠(yuǎn)不會(huì)嵌入空值。
  • 僅使用 1 字節(jié)、2 字節(jié)和 3 字節(jié)格式。
  • 補(bǔ)充字符以代理對(duì)的形式表示。

Since:

JDK1.0

方法總結(jié)

修飾符和類型 方法 描述
boolean readBoolean() 讀取一個(gè)輸入字節(jié),如果該字節(jié)非零則返回 true,如果該字節(jié)為零則返回 false。
byte readByte() 讀取并返回一個(gè)輸入字節(jié)。
char readChar() 讀取兩個(gè)輸入字節(jié)并返回一個(gè) char 值。
double readDouble() 讀取八個(gè)輸入字節(jié)并返回一個(gè)雙精度值。
float readFloat() 讀取四個(gè)輸入字節(jié)并返回一個(gè)浮點(diǎn)值。
void readFully(byte[] b) 從輸入流中讀取一些字節(jié)并將它們存儲(chǔ)到緩沖區(qū)數(shù)組中 b。
void readFully(byte[] b, int off, int len) 從輸入流中讀取 len 個(gè)字節(jié)。
int readInt() 讀取四個(gè)輸入字節(jié)并返回一個(gè) int 值。
String readLine() 從輸入流中讀取下一行文本。
long readLong() 讀取八個(gè)輸入字節(jié)并返回一個(gè) long 值。
short readShort() 讀取兩個(gè)輸入字節(jié)并返回一個(gè)短值。
int readUnsignedByte() 讀取一個(gè)輸入字節(jié),將其零擴(kuò)展為 int 類型,并返回結(jié)果,因此該結(jié)果在 0 到 255 的范圍內(nèi)。
int readUnsignedShort() 讀取兩個(gè)輸入字節(jié)并返回 0 到 65535 范圍內(nèi)的 int 值。
String readUTF() 讀取使用修改后的 UTF-8 格式編碼的字符串。
int skipBytes(int n) 嘗試從輸入流中跳過 n 個(gè)字節(jié)的數(shù)據(jù),丟棄跳過的字節(jié)。

方法詳情

readFully

void readFully(byte[] b) throws IOException

從輸入流中讀取一些字節(jié)并將它們存儲(chǔ)到緩沖區(qū)數(shù)組中 b。 讀取的字節(jié)數(shù)等于 b 的長(zhǎng)度。

此方法會(huì)阻塞,直到發(fā)生以下情況之一:

  • b.length 字節(jié)的輸入數(shù)據(jù)可用,在這種情況下正常返回。
  • 檢測(cè)到文件結(jié)尾,在這種情況下拋出 EOFException。
  • 發(fā)生 I/O 錯(cuò)誤,在這種情況下會(huì)拋出 EOFException 以外的 IOException。

如果 b 為 null,則拋出 NullPointerException。 如果 b.length 為零,則不讀取任何字節(jié)。 否則,讀取的第一個(gè)字節(jié)存儲(chǔ)到元素 b[0] 中,下一個(gè)字節(jié)存儲(chǔ)到 b[1] 中,依此類推。 如果此方法引發(fā)異常,則可能是 b 的某些但不是所有字節(jié)已使用來自輸入流的數(shù)據(jù)進(jìn)行了更新。

參數(shù):

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

Throws:

Throw名稱 Throw描述
EOFException 如果此流在讀取所有字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readFully

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

從輸入流中讀取 len 個(gè)字節(jié)。

此方法會(huì)阻塞,直到發(fā)生以下情況之一:

  • len 字節(jié)的輸入數(shù)據(jù)可用,在這種情況下會(huì)正常返回。
  • 檢測(cè)到文件結(jié)尾,在這種情況下拋出 EOFException。
  • 發(fā)生 I/O 錯(cuò)誤,在這種情況下會(huì)拋出 EOFException 以外的 IOException。

如果 b 為 null,則拋出 NullPointerException。 如果 off 為負(fù)數(shù),或 len 為負(fù)數(shù),或 off+len 大于數(shù)組 b 的長(zhǎng)度,則拋出 IndexOutOfBoundsException。 如果 len 為零,則不讀取任何字節(jié)。 否則,讀取的第一個(gè)字節(jié)存儲(chǔ)到元素 b[off] 中,下一個(gè)字節(jié)存儲(chǔ)到 b[off+1] 中,依此類推。 讀取的字節(jié)數(shù)最多等于 len。

參數(shù):

參數(shù)名稱 參數(shù)描述
b 讀取數(shù)據(jù)的緩沖區(qū)。
off 一個(gè) int,指定數(shù)據(jù)的偏移量。
len 一個(gè) int 指定要讀取的字節(jié)數(shù)。

Throws:

Throw名稱 Throw描述
EOFException 如果此流在讀取所有字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

skipBytes

int skipBytes(int n) throws IOException

嘗試從輸入流中跳過 n 個(gè)字節(jié)的數(shù)據(jù),丟棄跳過的字節(jié)。 但是,它可能會(huì)跳過一些較小的字節(jié)數(shù),可能為零。 這可能是由多種情況中的任何一種造成的; 在跳過 n 個(gè)字節(jié)之前到達(dá)文件末尾只是一種可能性。 此方法從不拋出 EOFException。 返回實(shí)際跳過的字節(jié)數(shù)。

參數(shù):

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

返回:

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

Throws:

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

readBoolean

boolean readBoolean() throws IOException

讀取一個(gè)輸入字節(jié),如果該字節(jié)非零則返回 true,如果該字節(jié)為零則返回 false。 該方法適用于讀取接口DataOutput的writeBoolean方法寫入的字節(jié)。

返回:

讀取的布爾值。

Throws:

Throw名稱 Throw描述
EOFException 如果此流在讀取所有字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readByte

byte readByte() throws IOException

讀取并返回一個(gè)輸入字節(jié)。 該字節(jié)被視為 -128 到 127(含)范圍內(nèi)的有符號(hào)值。 該方法適用于讀取接口DataOutput的writeByte方法寫入的字節(jié)。

返回:

讀取的 8 位值。

Throws:

Throw名稱 Throw描述
EOFException 如果此流在讀取所有字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readUnsignedByte

int readUnsignedByte() throws IOException

讀取一個(gè)輸入字節(jié),將其零擴(kuò)展為 int 類型,并返回結(jié)果,因此范圍為 0 到 255。此方法適用于讀取接口 DataOutput 的 writeByte 方法寫入的字節(jié),前提是 writeByte 的參數(shù)為 旨在為 0 到 255 范圍內(nèi)的值。

返回:

讀取的無符號(hào) 8 位值。

Throws:

Throw名稱 Throw描述
EOFException 如果此流在讀取所有字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readShort

short readShort() throws IOException

讀取兩個(gè)輸入字節(jié)并返回一個(gè)短值。 設(shè) a 為讀取的第一個(gè)字節(jié), b 為第二個(gè)字節(jié)。 返回的值為:

(short)((a << 8) | (b & 0xff)) 

該方法適用于讀取接口DataOutput的writeShort方法寫入的字節(jié)。

返回:

讀取的 16 位值。

Throws:

Throw名稱 Throw描述
EOFException 如果此流在讀取所有字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readUnsignedShort

int readUnsignedShort() throws IOException

讀取兩個(gè)輸入字節(jié)并返回 0 到 65535 范圍內(nèi)的 int 值。設(shè) a 為讀取的第一個(gè)字節(jié),b 為第二個(gè)字節(jié)。 返回的值為:

(((a & 0xff) << 8) | (b & 0xff)) 

如果 writeShort 的參數(shù)打算是 0 到 65535 范圍內(nèi)的值,則此方法適用于讀取接口 DataOutput 的 writeShort 方法寫入的字節(jié)。

返回:

讀取的無符號(hào) 16 位值。

Throws:

Throw名稱 Throw描述
EOFException 如果此流在讀取所有字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readChar

char readChar() throws IOException

讀取兩個(gè)輸入字節(jié)并返回一個(gè) char 值。 設(shè) a 為讀取的第一個(gè)字節(jié), b 為第二個(gè)字節(jié)。 返回的值為:

(char)((a << 8) | (b & 0xff)) 

該方法適用于讀取接口DataOutput的writeChar方法寫入的字節(jié)。

返回:

讀取的 char 值。

Throws:

Throw名稱 Throw描述
EOFException 如果此流在讀取所有字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readInt

int readInt() throws IOException

讀取四個(gè)輸入字節(jié)并返回一個(gè) int 值。 讓 a-d 成為讀取的第一個(gè)到第四個(gè)字節(jié)。 返回的值為:

 (((a & 0xff) << 24) | ((b & 0xff) << 16) |
  ((c & 0xff) <<  8) | (d & 0xff))

該方法適用于讀取接口DataOutput的writeInt方法寫入的字節(jié)。

返回:

讀取的 int 值。

Throws:

Throw名稱 Throw描述
EOFException 如果此流在讀取所有字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readLong

long readLong() throws IOException

讀取八個(gè)輸入字節(jié)并返回一個(gè) long 值。 讓 a-h 成為讀取的第一個(gè)到第八個(gè)字節(jié)。 返回的值為:

 (((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方法寫入的字節(jié)。

返回:

讀取的 long 值。

Throws:

Throw名稱 Throw描述
EOFException 如果此流在讀取所有字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readFloat

float readFloat() throws IOException

讀取四個(gè)輸入字節(jié)并返回一個(gè)浮點(diǎn)值。 它首先按照 readInt 方法的方式構(gòu)造一個(gè) int 值,然后按照 Float.intBitsToFloat 方法的方式將此 int 值轉(zhuǎn)換為浮點(diǎn)數(shù)。 該方法適用于讀取接口DataOutput的writeFloat方法寫入的字節(jié)。

返回:

讀取的浮點(diǎn)值。

Throws:

Throw名稱 Throw描述
EOFException 如果此流在讀取所有字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readDouble

double readDouble() throws IOException

讀取八個(gè)輸入字節(jié)并返回一個(gè)雙精度值。 它首先按照 readLong 方法的方式構(gòu)造一個(gè) long 值,然后按照 Double.longBitsToDouble 方法的方式將此 long 值轉(zhuǎn)換為 double。 該方法適用于讀取接口DataOutput的writeDouble方法寫入的字節(jié)。

返回:

讀取的雙精度值。

Throws:

Throw名稱 Throw描述
EOFException 如果此流在讀取所有字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。

readLine

String readLine() throws IOException

從輸入流中讀取下一行文本。它讀取連續(xù)的字節(jié),將每個(gè)字節(jié)分別轉(zhuǎn)換為一個(gè)字符,直到遇到行終止符或文件結(jié)尾;然后將讀取的字符作為字符串返回。請(qǐng)注意,由于此方法處理字節(jié),因此它不支持輸入完整的 Unicode 字符集。

如果在讀取一個(gè)字節(jié)之前遇到文件結(jié)尾,則返回 null。否則,讀取的每個(gè)字節(jié)都通過零擴(kuò)展轉(zhuǎn)換為 char 類型。如果遇到字符“\n”,則將其丟棄并停止讀取。如果遇到字符“\r”,則將其丟棄,如果后面的字節(jié)轉(zhuǎn)換為字符“\n”,則也將其丟棄;然后停止閱讀。如果在遇到字符 '\n' 和 '\r' 之前遇到文件結(jié)尾,則停止讀取。停止讀取后,將返回一個(gè)字符串,其中包含按順序讀取且未丟棄的所有字符。請(qǐng)注意,此字符串中的每個(gè)字符的值都小于 \u0100,即 (char)256。

返回:

輸入流中的下一行文本,如果在讀取字節(jié)之前遇到文件結(jié)尾,則返回 null。

Throws:

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

readUTF

String readUTF() throws IOException

讀取使用修改后的 UTF-8 格式編碼的字符串。 readUTF 的一般約定是它讀取以修改后的 UTF-8 格式編碼的 Unicode 字符串的表示;然后這個(gè)字符串作為字符串返回。

首先,讀取兩個(gè)字節(jié)并使用 readUnsignedShort 方法的方式構(gòu)造一個(gè)無符號(hào)的 16 位整數(shù)。這個(gè)整數(shù)值稱為 UTF 長(zhǎng)度,并指定要讀取的附加字節(jié)數(shù)。然后通過分組考慮將這些字節(jié)轉(zhuǎn)換為字符。每個(gè)組的長(zhǎng)度是根據(jù)組的第一個(gè)字節(jié)的值計(jì)算的。組后面的字節(jié)(如果有的話)是下一組的第一個(gè)字節(jié)。

如果組的第一個(gè)字節(jié)與位模式 0xxxxxxx 匹配(其中 x 表示“可能是 0 或 1”),則該組僅由該字節(jié)組成。該字節(jié)被零擴(kuò)展以形成一個(gè)字符。

如果組的第一個(gè)字節(jié)與位模式 110xxxxx 匹配,則該組由該字節(jié) a 和第二個(gè)字節(jié) b 組成。如果沒有字節(jié) b(因?yàn)樽止?jié) a 是要讀取的最后一個(gè)字節(jié)),或者如果字節(jié) b 與位模式 10xxxxxx 不匹配,則拋出 UTFDataFormatException。否則,該組將轉(zhuǎn)換為字符:

(char)(((a & 0x1F) << 6) | (b & 0x3F)) 

如果組的第一個(gè)字節(jié)與位模式 1110xxxx 匹配,則該組由該字節(jié) a 和另外兩個(gè)字節(jié) b 和 c 組成。 如果沒有字節(jié) c(因?yàn)樽止?jié) a 是要讀取的最后兩個(gè)字節(jié)之一),或者字節(jié) b 或字節(jié) c 與位模式 10xxxxxx 不匹配,則拋出 UTFDataFormatException。 否則,該組將轉(zhuǎn)換為字符:

 (char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F)) 

如果組的第一個(gè)字節(jié)匹配模式 1111xxxx 或模式 10xxxxxx,則拋出 UTFDataFormatException。

如果在整個(gè)過程中的任何時(shí)候遇到文件結(jié)尾,則拋出 EOFException。

在通過此過程將每個(gè)組轉(zhuǎn)換為字符后,按照從輸入流中讀取相應(yīng)組的相同順序收集字符,形成一個(gè)字符串,然后返回該字符串。

接口DataOutput的writeUTF方法可用于寫入適合該方法讀取的數(shù)據(jù)。

返回:

一個(gè) Unicode 字符串。

Throws:

Throw名稱 Throw描述
EOFException 如果此流在讀取所有字節(jié)之前到達(dá)末尾。
IOException 如果發(fā)生 I/O 錯(cuò)誤。
UTFDataFormatException 如果字節(jié)不代表字符串的有效修改 UTF-8 編碼。

分享題目:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSDataInput
文章鏈接:http://www.dlmjj.cn/article/djehcdh.html