鴻蒙OS DataOutput

2022-10-17 11:23 更新

DataOutput

  1. public interface DataOutput

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

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

Since:

JDK1.0

方法總結(jié)

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

方法詳情

write

void write(int b) throws IOException

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

參數(shù):

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

Throws:

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

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 錯誤。

write

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

按順序?qū)?shù)組 b 中的 len 個字節(jié)寫入輸出流。 如果 b 為 null,則拋出 NullPointerException。 如果 off 為負數(shù),或 len 為負數(shù),或 off+len 大于數(shù)組 b 的長度,則拋出 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 錯誤。

writeBoolean

void writeBoolean(boolean v) throws IOException

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

參數(shù):

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

Throws:

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

writeByte

void writeByte(int v) throws IOException

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

參數(shù):

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

Throws:

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

writeShort

void writeShort(int v) throws IOException

將兩個字節(jié)寫入輸出流以表示參數(shù)的值。 要寫入的字節(jié)值按所示順序為:

  1. (byte)(0xff & (v >> 8))
  2. (byte)(0xff & v)

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

參數(shù):

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

Throws:

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

writeChar

void writeChar(int v) throws IOException

將一個由兩個字節(jié)組成的 char 值寫入輸出流。 要寫入的字節(jié)值按所示順序為:

  1. (byte)(0xff & (v >> 8))
  2. (byte)(0xff & v)

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

參數(shù):

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

Throws:

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

writeInt

void writeInt(int v) throws IOException

將一個由四個字節(jié)組成的 int 值寫入輸出流。 要寫入的字節(jié)值按所示順序為:

  1. (byte)(0xff & (v >> 24))
  2. (byte)(0xff & (v >> 16))
  3. (byte)(0xff & (v >> 8))
  4. (byte)(0xff & v)

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

參數(shù):

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

Throws:

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

writeLong

void writeLong(long v) throws IOException

將一個由 8 個字節(jié)組成的 long 值寫入輸出流。 要寫入的字節(jié)值按所示順序為:

  1. (byte)(0xff & (v >> 56))
  2. (byte)(0xff & (v >> 48))
  3. (byte)(0xff & (v >> 40))
  4. (byte)(0xff & (v >> 32))
  5. (byte)(0xff & (v >> 24))
  6. (byte)(0xff & (v >> 16))
  7. (byte)(0xff & (v >> 8))
  8. (byte)(0xff & v)

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

參數(shù):

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

Throws:

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

writeFloat

void writeFloat(float v) throws IOException

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

參數(shù):

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

Throws:

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

writeDouble

void writeDouble(double v) throws IOException

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

參數(shù):

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

Throws:

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

writeBytes

void writeBytes(String s) throws IOException

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

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

參數(shù):

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

Throws:

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

writeChars

void writeChars(String s) throws IOException

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

參數(shù):

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

Throws:

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

writeUTF

void writeUTF(String s) throws IOException

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

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

  1. (byte)c

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

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

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

  1. (byte)(0xe0 | (0x0f & (c >> 12)))
  2. (byte)(0x80 | (0x3f & (c >> 6)))
  3. (byte)(0x80 | (0x3f & c))

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

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

參數(shù):

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

Throws:

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號