天天看點

對ByteArrayInputStreamh和ByteArrayOutputStream的了解及使用

package io;

/* 
 * 作用:
 * 		ByteArrayInputStream是将資料寫入到記憶體輸入流中,通過構造函數實作的,而用read()方法來讀取記憶體輸入流的資料
 * 		ByteArrayOutputStream是将資料寫入到記憶體輸出流,通過write()方法實作的
 * 		
 * 		我們可以這樣了解上面的過程,将程式和記憶體分為兩層。
 * 		ByteArrayInputStream就是把程式這一層的資料儲存進記憶體,而通過read()将資料讀取出來
 * 		而ByteArrayOutputStream就是把它當做是記憶體的中的一個緩沖區,向其中寫入資料,緩沖區自動增長,
 * 		當寫入完成時可以從中提取資料。通過toByteArray()和toString()實作。
 * 
 * 
 * */



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

public class ByteArrayInputStreamAndByteArrayOutputStream {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = "周敬zhejianggongshang wangyi";
		
		//ByteArrayInputStream記憶體輸入流,将資料寫入到記憶體中
		ByteArrayInputStream in = new ByteArrayInputStream(str.getBytes());
		
		//ByteArrayOutputStream記憶體輸出流,個人覺得它就是一個緩存器,從記憶體讀取到的資料寫入到在它的内部緩存區中
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		
		int temp = 0;
		
		while((temp=in.read())!= -1){	//将記憶體中的資料讀取出來,儲存在臨時變量temp中					
			out.write(temp);  //将獲得到的資料寫入到記憶體輸出流對象out中
		}
		
		try {
			in.close();
			out.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		System.out.println(out.toString());
		
	}

}