鴻蒙OS DataOutput

2022-10-17 11:23 更新

DataOutput

public interface DataOutput

DataOutput 接口提供將數(shù)據(jù)從任何 Java 原始類型轉(zhuǎn)換為一系列字節(jié)并將這些字節(jié)寫入二進(jìn)制流。 還有一種工具可以將字符串轉(zhuǎn)換為修改后的 UTF-8 格式并寫入生成的一系列字節(jié)。

對(duì)于此接口中所有寫入字節(jié)的方法,通常情況下,如果由于某種原因無法寫入字節(jié),則會(huì)拋出 IOException。

Since:

JDK1.0

方法總結(jié)

修飾符和類型 方法 描述
void write(byte[] b) 將數(shù)組 b 中的所有字節(jié)寫入輸出流。
void write(byte[] b, int off, int len) 按順序?qū)?shù)組 b 中的 len 個(gè)字節(jié)寫入輸出流。
void write(int b) 將參數(shù) b 的 8 個(gè)低位寫入輸出流。
void writeBoolean(boolean v) 將布爾值寫入此輸出流。
void writeByte(int v) 將參數(shù) v 的 8 個(gè)低位寫入輸出流。
void writeBytes(String s) 將字符串寫入輸出流。
void writeChar(int v) 將一個(gè)由兩個(gè)字節(jié)組成的 char 值寫入輸出流。
void writeChars(String s) 將字符串 s 中的每個(gè)字符按順序?qū)懭胼敵隽?,每個(gè)字符兩個(gè)字節(jié)。
void writeDouble(double v) 將包含八個(gè)字節(jié)的雙精度值寫入輸出流。
void writeFloat(float v) 將一個(gè)由四個(gè)字節(jié)組成的浮點(diǎn)值寫入輸出流。
void writeInt(int v) 將一個(gè)由四個(gè)字節(jié)組成的 int 值寫入輸出流。
void writeLong(long v) 將一個(gè)由 8 個(gè)字節(jié)組成的 long 值寫入輸出流。
void writeShort(int v) 將兩個(gè)字節(jié)寫入輸出流以表示參數(shù)的值。
void writeUTF(String s) 將兩個(gè)字節(jié)的長(zhǎng)度信息寫入輸出流,然后是字符串 s 中每個(gè)字符的修改后的 UTF-8 表示。

方法詳情

write

void write(int b) throws IOException

將參數(shù) b 的 8 個(gè)低位寫入輸出流。 b 的高 24 位被忽略。

參數(shù):

參數(shù)名稱 參數(shù)描述
b 要寫入的字節(jié)。

Throws:

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

write

void write(byte[] b) throws IOException

將數(shù)組 b 中的所有字節(jié)寫入輸出流。 如果 b 為 null,則拋出 NullPointerException。 如果 b.length 為零,則不寫入任何字節(jié)。 否則,先寫入字節(jié) b[0],然后寫入 b[1],以此類推; 最后寫入的字節(jié)是 b[b.length-1]。

參數(shù):

參數(shù)名稱 參數(shù)描述
b 數(shù)據(jù)。

Throws:

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

write

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

按順序?qū)?shù)組 b 中的 len 個(gè)字節(jié)寫入輸出流。 如果 b 為 null,則拋出 NullPointerException。 如果 off 為負(fù)數(shù),或 len 為負(fù)數(shù),或 off+len 大于數(shù)組 b 的長(zhǎng)度,則拋出 IndexOutOfBoundsException。 如果 len 為零,則不寫入任何字節(jié)。 否則,先寫入字節(jié)b[off],再寫入b[off+1],以此類推; 最后寫入的字節(jié)是 b[off+len-1]。

參數(shù):

參數(shù)名稱 參數(shù)描述
b 數(shù)據(jù)。
off 數(shù)據(jù)中的起始偏移量。
len 要寫入的字節(jié)數(shù)。

Throws:

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

writeBoolean

void writeBoolean(boolean v) throws IOException

將布爾值寫入此輸出流。 如果參數(shù) v 為 true,則寫入值(字節(jié))1; 如果 v 為 false,則寫入值(字節(jié))0。 該方法寫入的字節(jié)可以被接口DataInput的readBoolean方法讀取,然后返回一個(gè)等于v的布爾值。

參數(shù):

參數(shù)名稱 參數(shù)描述
v 要寫入的布爾值。

Throws:

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

writeByte

void writeByte(int v) throws IOException

將參數(shù) v 的 8 個(gè)低位寫入輸出流。 v 的 24 個(gè)高位被忽略。 (這意味著 writeByte 與寫入整數(shù)參數(shù)的操作完全相同。)此方法寫入的字節(jié)可以由接口 DataInput 的 readByte 方法讀取,然后返回等于 (byte)v 的字節(jié)。

參數(shù):

參數(shù)名稱 參數(shù)描述
v 要寫入的字節(jié)值。

Throws:

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

writeShort

void writeShort(int v) throws IOException

將兩個(gè)字節(jié)寫入輸出流以表示參數(shù)的值。 要寫入的字節(jié)值按所示順序?yàn)椋?/p>

 (byte)(0xff & (v >> 8))
 (byte)(0xff & v)

此方法寫入的字節(jié)可能會(huì)被接口 DataInput 的 readShort 方法讀取,然后該方法將返回一個(gè)等于 (short)v 的short。

參數(shù):

參數(shù)名稱 參數(shù)描述
v 要寫入的短值。

Throws:

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

writeChar

void writeChar(int v) throws IOException

將一個(gè)由兩個(gè)字節(jié)組成的 char 值寫入輸出流。 要寫入的字節(jié)值按所示順序?yàn)椋?/p>

 (byte)(0xff & (v >> 8))
 (byte)(0xff & v)

該方法寫入的字節(jié)可以被接口 DataInput 的 readChar 方法讀取,然后返回一個(gè)等于 (char)v 的字符。

參數(shù):

參數(shù)名稱 參數(shù)描述
v 要寫入的 char 值。

Throws:

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

writeInt

void writeInt(int v) throws IOException

將一個(gè)由四個(gè)字節(jié)組成的 int 值寫入輸出流。 要寫入的字節(jié)值按所示順序?yàn)椋?/p>

 (byte)(0xff & (v >> 24))
 (byte)(0xff & (v >> 16))
 (byte)(0xff & (v >>  8))
 (byte)(0xff & v)

此方法寫入的字節(jié)可以由接口 DataInput 的 readInt 方法讀取,然后返回一個(gè)等于 v 的 int。

參數(shù):

參數(shù)名稱 參數(shù)描述
v 要寫入的 int 值。

Throws:

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

writeLong

void writeLong(long v) throws IOException

將一個(gè)由 8 個(gè)字節(jié)組成的 long 值寫入輸出流。 要寫入的字節(jié)值按所示順序?yàn)椋?/p>

 (byte)(0xff & (v >> 56))
 (byte)(0xff & (v >> 48))
 (byte)(0xff & (v >> 40))
 (byte)(0xff & (v >> 32))
 (byte)(0xff & (v >> 24))
 (byte)(0xff & (v >> 16))
 (byte)(0xff & (v >>  8))
 (byte)(0xff & v)

該方法寫入的字節(jié)可以被接口 DataInput 的 readLong 方法讀取,然后返回一個(gè)等于 v 的 long。

參數(shù):

參數(shù)名稱 參數(shù)描述
v 要寫入的 long 值。

Throws:

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

writeFloat

void writeFloat(float v) throws IOException

將一個(gè)由四個(gè)字節(jié)組成的浮點(diǎn)值寫入輸出流。 就像它首先完全按照 Float.floatToIntBits 方法的方式將此浮點(diǎn)值轉(zhuǎn)換為一個(gè) int,然后按照 writeInt 方法的完全一樣的方式寫入 int 值。 該方法寫入的字節(jié)可能會(huì)被接口 DataInput 的 readFloat 方法讀取,然后返回一個(gè)等于 v 的浮點(diǎn)數(shù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
v 要寫入的浮點(diǎn)值。

Throws:

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

writeDouble

void writeDouble(double v) throws IOException

將包含八個(gè)字節(jié)的雙精度值寫入輸出流。 就像它首先完全按照 Double.doubleToLongBits 方法的方式將此 double 值轉(zhuǎn)換為 long 值,然后按照 writeLong 方法的方式寫入 long 值一樣。 這個(gè)方法寫入的字節(jié)可以被接口DataInput的readDouble方法讀取,然后返回一個(gè)等于v的double。

參數(shù):

參數(shù)名稱 參數(shù)描述
v 要寫入的雙精度值。

Throws:

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

writeBytes

void writeBytes(String s) throws IOException

將字符串寫入輸出流。 對(duì)于字符串 s 中的每個(gè)字符,按順序?qū)⒁粋€(gè)字節(jié)寫入輸出流。 如果 s 為 null,則拋出 NullPointerException。

如果 s.length 為零,則不寫入任何字節(jié)。 否則先寫字符s[0],再寫s[1],以此類推; 最后寫入的字符是 s[s.length-1]。 對(duì)于每個(gè)字符,以 writeByte 方法的方式寫入一個(gè)字節(jié),即低位字節(jié)。 忽略字符串中每個(gè)字符的高八位。

參數(shù):

參數(shù)名稱 參數(shù)描述
s 要寫入的字節(jié)串。

Throws:

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

writeChars

void writeChars(String s) throws IOException

將字符串 s 中的每個(gè)字符按順序?qū)懭胼敵隽?,每個(gè)字符兩個(gè)字節(jié)。 如果 s 為 null,則拋出 NullPointerException。 如果 s.length 為零,則不寫入任何字符。 否則先寫字符s[0],再寫s[1],以此類推; 最后寫入的字符是 s[s.length-1]。 對(duì)于每個(gè)字符,實(shí)際上寫入了兩個(gè)字節(jié),首先是高位字節(jié),這與 writeChar 方法的方式完全相同。

參數(shù):

參數(shù)名稱 參數(shù)描述
s 要寫入的字符串值。

Throws:

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

writeUTF

void writeUTF(String s) throws IOException

將兩個(gè)字節(jié)的長(zhǎng)度信息寫入輸出流,然后是字符串 s 中每個(gè)字符的修改后的 UTF-8 表示。 如果 s 為 null,則拋出 NullPointerException。 根據(jù)字符的值,字符串 s 中的每個(gè)字符都轉(zhuǎn)換為一組一個(gè)、兩個(gè)或三個(gè)字節(jié)。

如果字符 c 在 \u0001 到 \u007f 的范圍內(nèi),它由一個(gè)字節(jié)表示:

(byte)c 

如果字符 c 是 \u0000 或在 \u0080 到 \u07ff 范圍內(nèi),則它由兩個(gè)字節(jié)表示,按所示順序?qū)懭耄?/p>

 (byte)(0xc0 | (0x1f & (c >> 6)))
 (byte)(0x80 | (0x3f & c))

如果字符 c 在 \u0800 到 uffff 范圍內(nèi),則它由三個(gè)字節(jié)表示,按所示順序?qū)懭耄?/p>

 (byte)(0xe0 | (0x0f & (c >> 12)))
 (byte)(0x80 | (0x3f & (c >>  6)))
 (byte)(0x80 | (0x3f & c))

首先,計(jì)算表示 s 的所有字符所需的總字節(jié)數(shù)。 如果此數(shù)字大于 65535,則拋出 UTFDataFormatException。 否則,這個(gè)長(zhǎng)度完全按照 writeShort 方法的方式寫入輸出流; 在此之后,寫入字符串 s 中每個(gè)字符的一、二或三字節(jié)表示。

該方法寫入的字節(jié)可以被接口 DataInput 的 readUTF 方法讀取,然后返回一個(gè)等于 s 的字符串。

參數(shù):

參數(shù)名稱 參數(shù)描述
s 要寫入的字符串值。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)