JavaIO編程(內存流)

內存流的作用:假設某一種應用需要進行IO操作,但又不希望在磁盤上產生一些文件時,就可以將內存作爲一個臨時文件進行操作。
字節內存流:ByteArrayInputStream、ByteArrayOutputStream;
字符內存流:CharArrayReader、CharArrayWriter。
字節內存流與字符內存流的區別:兩者的唯一的區別就在於操作數據類型上。(Byte、Char)

實現一個小寫字母轉大寫字母的操作:

import java.io.*;

public class Test {
	public static void main(String[] args) throws Exception {
		String str ="Hello*Word!!!";
		//通過內存流實現轉換。先將數據保存在內存中,然後從裏面取出每一個數據
		//將所有要讀取的數據設置到內存輸入流之中,本次利用向上轉型爲InputStream實例化
		InputStream input = new ByteArrayInputStream(str.getBytes());
		//將所有內存數據取出
		OutputStream output = new ByteArrayOutputStream();
		int temp = 0;
		//經過此次循環,所有的數據都將保持在內存輸出流對象之中
		while((temp = input.read()) !=-1){		//每次讀取一個數據
			output.write(Character.toUpperCase(temp));			//字節輸出流
		}
		System.out.println(output);		
		input.close();
		output.close();
	}
}

以程序操作爲例:
|-輸出 :程序>>>OutputStream<<<文件
|-輸入 :程序>>>lnputStream<<<文件

以內存操作爲例:
|-輸出:程序>>>lnputStream>>>內存
|-輸入:程序<<<OutputStream<<<內存

通過內存流實現文件的合併讀取:

import java.io.*;

public class Test2 {
	public static void main(String args[]) throws Exception{
		File fileA = new File("D:" +File.separator + "AAA.txt");
		File fileB = new File("D:" +File.separator + "BBB.txt");	
		InputStream inputA = new FileInputStream(fileA);		//字節輸入流
		InputStream inputB = new FileInputStream(fileB);		//字節輸入流
		ByteArrayOutputStream output = new ByteArrayOutputStream(); 	//內存輸出流
		int temp = 0 ;
		while((temp=inputA.read()) != -1){
			output.write(temp);					//循環讀取數據,並將數據保存到輸出流
		}
		while( (temp = inputB.read()) != -1){
			output.write(temp);
		}
		byte data[] = output.toByteArray();		//取出全部數據
		output.close();
		inputA.close();
		inputB.close();
		System.out.println(new String(data));
	}
}
發佈了33 篇原創文章 · 獲贊 1 · 訪問量 4702
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章