1. 程式人生 > >內存流(字節數組流)ByteArrayInputStream

內存流(字節數組流)ByteArrayInputStream

sta static -s new ray AS print AI exceptio

package org.example.io;

import java.io.ByteArrayInputStream;
import java.io.IOException;

/**

* ByteArrayInputStream:在創建對象時傳入數組即可,不需要傳文件,也沒有新增的方法,close()關閉無效

* 流本身就是內存中的資源,流中的內容也是內存中的資源,所以不用手動關閉,內存會給他釋放,所以不用關閉流

* 流的內容是內存中的資源,不訪問磁盤

*/

public class TestByteArrayInputStream {

  public static void main(String[] args) {

    String s = "Hello World!";

    byte[] b = s.getBytes();  // 獲取字符串的字節數組

    read(b);

  }

  private static void read(byte[] b) {

    ByteArrayInputStream bais = new ByteArrayInputStream(b);  // ByteArrayInputStream實例化時不拋出異常的原因是沒有和外界產生關系

    int i = 0;

    byte[] b1 = new byte[1024];  // 字節數組緩沖區

    StringBuilder sb = new StringBuilder();  // StringBuilder位於java.lang包中,類似於字符串

    try {

      while ((i = bais.read(b1)) != -1) {

        sb.append(new String(b1, 0, i));  // 將指定的字符串循環附加到sb上

      }

      System.out.println(sb);  // 輸出sb字符串

    } catch (IOException e) {

      e.printStackTrace();

    }

  }

}

內存流(字節數組流)ByteArrayInputStream