天天看點

IO-ByteArrayOutputStream

java.io

類 ByteArrayOutputStream

java.lang.Object

┗java.io.OutputStream

  ┗java.io.ByteArrayOutputStream

所有已實作的接口:

Closeable, Flushable

public class ByteArrayOutputStreamextends OutputStream

此類實作了一個輸出流,其中的資料被寫入一個 byte 數組。緩沖區會随着資料的不斷寫入而自動增長。可使用 toByteArray() 和 toString() 擷取資料。

關閉 ByteArrayOutputStream 無效。此類中的方法在關閉此流後仍可被調用,而不會産生任何 IOException。

字段摘要

protected  byte[] buf

          存儲資料的緩沖區。

protected  int count

          緩沖區中的有效位元組數。

構造方法摘要

ByteArrayOutputStream()

          建立一個新的 byte 數組輸出流。

ByteArrayOutputStream(int size)

          建立一個新的 byte 數組輸出流,它具有指定大小的緩沖區容量(以位元組為機關)。

方法摘要

 void close()

          關閉 ByteArrayOutputStream 無效。

 void reset()

          将此 byte 數組輸出流的 count 字段重置為零,進而丢棄輸出流中目前已累積的所有輸出。

 int size()

          傳回緩沖區的目前大小。

 byte[] toByteArray()

          建立一個新配置設定的 byte 數組。

 String toString()

          使用平台預設的字元集,通過解碼位元組将緩沖區内容轉換為字元串。

 String toString(int hibyte)

          已過時。 此方法無法将位元組正确轉換為字元。從 JDK 1.1 開始,完成該轉換的首選方法是通過 toString(String enc) 方法(使用一個編碼名稱參數),或 toString() 方法(使用平台的預設字元編碼)。

 String toString(String charsetName)

          使用指定的 charsetName,通過解碼位元組将緩沖區内容轉換為字元串。

void write(int b)

          将指定的位元組寫入此 byte 數組輸出流。

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

          将指定 byte 數組中從偏移量 off 開始的 len 個位元組寫入此 byte 數組輸出流。

 void writeTo(OutputStream out)

          将此 byte 數組輸出流的全部内容寫入到指定的輸出流參數中,這與使用 out.write(buf, 0, count) 調用該輸出流的 write 方法效果一樣。

從類 java.io.OutputStream 繼承的方法

flush, write

從類 java.lang.Object 繼承的方法

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

字段詳細資訊

buf

protected byte[] buf存儲資料的緩沖區。

count

protected int count緩沖區中的有效位元組數。

構造方法詳細資訊

ByteArrayOutputStream

public ByteArrayOutputStream()

建立一個新的 byte 數組輸出流。緩沖區的容量最初是 32 位元組,如有必要可增加其大小。

ByteArrayOutputStream

public ByteArrayOutputStream(int size)建立一個新的 byte 數組輸出流,它具有指定大小的緩沖區容量(以位元組為機關)。

參數:

size - 初始大小。

抛出:

IllegalArgumentException - 如果 size 為負。

方法詳細資訊

write

public void write(int b)

将指定的位元組寫入此 byte 數組輸出流。

指定者:

類 OutputStream 中的 write

參數:

b - 要寫入的位元組。

write

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

将指定 byte 數組中從偏移量 off 開始的 len 個位元組寫入此 byte 數組輸出流。

覆寫:

類 OutputStream 中的 write

參數:

b - 資料。

off - 資料的初始偏移量。

len - 要寫入的位元組數。

writeTo

public void writeTo(OutputStream out) throws IOException

将此 byte 數組輸出流的全部内容寫入到指定的輸出流參數中,這與使用 out.write(buf, 0, count) 調用該輸出流的 write 方法效果一樣。

參數:

out - 要寫入資料的輸出流。

抛出:

IOException - 如果發生 I/O 錯誤。

reset

public void reset()将此 byte 數組輸出流的 count 字段重置為零,進而丢棄輸出流中目前已累積的所有輸出。通過重新使用已配置設定的緩沖區空間,可以再次使用該輸出流。

toByteArray

public byte[] toByteArray()

建立一個新配置設定的 byte 數組。其大小是此輸出流的目前大小,并且緩沖區的有效内容已複制到該數組中。

傳回:

以 byte 數組的形式傳回此輸出流的目前内容。

size

public int size()

傳回緩沖區的目前大小。

傳回:

count 字段的值,這是此輸出流中有效位元組的數目。

toString

public String toString()

使用平台預設的字元集,通過解碼位元組将緩沖區内容轉換為字元串。新 String 的長度是字元集的函數,是以可能不等于緩沖區的大小。

此方法總是使用平台預設字元集的預設替代字元串替代錯誤輸入 (malformed-input) 和不可映射字元 (unmappable-character) 序列。如果需要對解碼過程進行更多控制,則應該使用 CharsetDecoder 類。

覆寫:

類 Object 中的 toString

傳回:

從緩沖區内容解碼的字元串。

toString

public String toString(String charsetName) throws UnsupportedEncodingException

使用指定的 charsetName,通過解碼位元組将緩沖區内容轉換為字元串。新 String 的長度是字元集的函數,是以可能不等于緩沖區的大小。

此方法總是使用平台預設字元集的預設替代字元串替代錯誤輸入 (malformed-input) 和不可映射字元 (unmappable-character) 序列。如果需要對解碼過程進行更多控制,則應該使用 CharsetDecoder 類。

參數:

charsetName - charset 支援的名稱

傳回:

從緩沖區内容解碼的字元串。

抛出:

UnsupportedEncodingException - 如果不支援指定的字元集。

toString

@Deprecated

public String toString(int hibyte)

已過時。 此方法無法将位元組正确轉換為字元。從 JDK 1.1 開始,完成該轉換的首選方法是通過 toString(String enc) 方法(使用一個編碼名稱參數),或 toString() 方法(使用平台的預設字元編碼)。

建立一個新配置設定的字元串。其大小是該輸出流的目前大小,并且緩沖區的有效内容已複制到其中。得到的字元串中的每個字元 c 都根據 byte 數組中的相應元素 b 構造,如下所示:

     c == (char)(((hibyte & 0xff) << 8) | (b & 0xff))

參數:

hibyte - 每個結果 Unicode 字元的高次位元組。

傳回:

以字元串的形式傳回輸出流的目前内容。

close

public void close() throws IOException

關閉 ByteArrayOutputStream 無效。此類中的方法在關閉此流後仍可被調用,而不會産生任何 IOException 時。

指定者:

接口 Closeable 中的 close

覆寫:

類 OutputStream 中的 close

抛出:

IOException - 如果發生 I/O 錯誤。