系統學習 Java IO (七)----字節數組流 ByteArrayInputStream/ByteArrayOutputStream

目錄:系統學習 Java IO---- 目錄,概覽html

ByteArrayInputStream

若是數據存儲在數組中,ByteArrayInputStream 能夠很方便讀取,它能夠返回 InputStream , 這樣,ByteArrayInputStream 能夠包裝字節數組,並將其轉換爲流。java

構造器

public ByteArrayInputStream(@NotNull byte[] buf) : 建立一個 ByteArrayInputStream ,以便它使用 buf 做爲其緩衝區數組。 pos 的初始值爲 0 ,count 的初始值爲 buf 的長度。數組

注意:關閉 ByteArrayInputStream 無效。此類中的方法在關閉此流後仍可被調用,而不會產生任何 IOException。緩存

ByteArrayOutputStream

建立一個新的字節數組輸出流。 緩衝區容量最初爲32字節,但必要時其大小會增長。學習

構造器
  • OutputStream output = new ByteArrayOutputStream(); 建立一個32字節(默認大小)的緩衝區。
  • ByteArrayOutputStream(int size) 建立一個新的 byte 數組輸出流,它具備指定大小的緩衝區容量(以字節爲單位)。

能夠將數據寫入 ByteArrayOutputStream ,完成後,調用 ByteArrayOutputStream 的方法 toByteArray() 以獲取字節數組中的全部寫入數據。
byte[] bytes = output.toByteArray();code

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

若是有一個程序須要將其數據輸出到 OutputStream ,但咱們須要其返回字節數組的狀況下,ByteArrayOutputStream 能夠很方便完成任務。blog

很明顯 ByteArrayOutputStream 是用來緩存數據的,向它的內部自動增加的緩衝區寫入數據,再經過 output.toByteArray()能夠從中提取數據。get

一個例子:input

public class ByteArray {
    public static void main(String[] args) throws IOException {
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        output.write("Hello ByteArray".getBytes());
        // 只需調用方法 toByteArray(),全部寫入的數據都以數組形式返回。
        byte[] bytes = output.toByteArray();

        InputStream input = new ByteArrayInputStream(bytes);
        try {
            int data = input.read();
            while (data != -1) {
                System.out.print((char) data);
                data = input.read();
            }
            System.out.println();
        } catch (
                IOException e) {
            e.printStackTrace();
        }
    }
}
相關文章
相關標籤/搜索