Java ByteArrayOutputStream 內存輸出流

Java ByteArrayOutputStream 內存輸出流


概述

  • 此類實現了一個輸出流,其中的數據被寫入一個 byte 數組。緩衝區會隨着數據的不斷寫入而自動增長。可使用 toByteArray() 和 toString() 獲取數據

ByteArrayOutputStream

  • 構造方法
構造方法 說明
ByteArrayOutputStream() 創建一個新的 byte 數組輸出流
ByteArrayOutputStream(int size) 創建一個新的 byte 數組輸出流,它具有指定大小的緩衝區容量(以字節爲單位)
  • 方法
方法 說明
write(int b) 將指定的字節寫入此 byte 數組輸出流
write(byte[] b, int off, int len) 將指定 byte 數組中從偏移量 off 開始的 len 個字節寫入此 byte 數組輸出流
toByteArray() 創建一個新分配的 byte 數組
toString() 使用平臺默認的字符集,通過解碼字節將緩衝區內容轉換爲字符串
toString(String charsetName) 使用指定的 charsetName,通過解碼字節將緩衝區內容轉換爲字符串

讀取文件示例

FileInputStream input = null;

try{
    // 創建輸入流和內存輸出流
    input = new FileInputStream("a.txt");
    ByteArrayOutputStream output = new ByteArrayOutputStream();

    int b;
    // 從文件讀取數據,並寫入到內存緩衝區中
    while((b = input.read()) > 0) {
        output.write(b);
    }

    // 第一種獲得數據的方式: 調用toByteArray方法,返回內存中的數據
    byte[] byteArray = output.toByteArray();
    System.out.println(new String(byteArray));

    // 第二種獲得數據的方式:調用toString方法,將內存中的數據解碼成字符串
    String content = output.toString();
    System.out.println(content);

}catch(IOException e) {
    e.printStackTrace();
}finally {
    try{
        // 關閉輸入流
        if(input != null) {
            input.close();
        }
    }catch(IOException e){
        e.printStackTrace();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章