1 什麼是記憶體流
當輸出流的目的,和輸入流的源是記憶體時,這樣的流稱之為記憶體流。(就是将資料寫入RAM)

2 記憶體流的構造方法
1. ByteArrayInputStream(byte buf[]) 建立一個 ByteArrayInputStream 并把指定該輸入流的資料源buf[]。2.
2.ByteArrayOutputStream();建立一個 ByteArrayOutputStream 并把配置設定一個32位元組(預設大小)的緩沖區。
3. ByteArrayOutputStream(int size); 建立一個 ByteArrayOutputStream 并配置設定自定 size 位元組的緩沖區
3 讀取記憶體資料和寫入到記憶體資料
3.1 讀取記憶體資料
try {
String testContent = "ABCDEFG";//程式運作的時候 這資料本身就在記憶體,
ByteArrayInputStream bais = new ByteArrayInputStream(testContent.getBytes());//建立記憶體輸入流,指定要讀取的資料 byte[]
int read;
while ((read = bais.read()) != -1) {//和普通流讀取位元組是一樣的(也可以嵌套管道)
System.out.println((char) read);
}
bais.close();//關閉流,釋放記憶體資源
}...
3.2 寫入資料到記憶體
// ByteArrayOutputStream baos = new ByteArrayOutputStream(int size);//設定内部緩存大小為1。
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();//建立記憶體輸出流,把資料寫入到記憶體中
String s1 = "hhhhh";
String s2 = "aaaaa";
byte[] b1 = s1.getBytes();
byte[] b2 = s2.getBytes();
baos.write(b1);//和普通的輸出流寫輸入一樣,(也可以嵌套管道)
baos.write(b2);// 将 b2 byte[] 存放到 baos 中緩存
// 得到 ByteArrayOutputStream 内部的 byte[]中以緩存的數組
byte[] byteArray = baos.toByteArray();
String string = baos.toString();
System.out.println(string);
baos.flush();
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
4 ByteArrayOutputStream 常用方法:toByteArray(), toString()
1. toByteArray() 方法;是将 ByteArrayOutputStream 對象所寫入到記憶體的資料 轉換成 byte[] 傳回。
2. toString() 方法 ;是将 ByteArrayOutputStream 對象所寫入到記憶體的資料 轉換成 String 傳回。
提示:記憶體流 除了 ByteArrayInputStream 與 ByteArrayOutputStream 主要處理位元組資料之外,對應的還有:
- CharArrayReader 與 CharArrayWriter 主要處理字元數組。
- StringReader 與 StringWriter 主要處理字元串。