1. 程式人生 > >Java基礎學習之IO流模擬輸入複製貼上功能

Java基礎學習之IO流模擬輸入複製貼上功能

學習了IO流後,瞭解其IO體系
字元流:
Reader:輸入流 讀取 進入記憶體
Writer:輸出流 寫入 進硬碟
位元組流:
InputStream:輸入流 讀取 進記憶體
OutputStream:輸出流 寫入 進硬碟

下面通過字元流的輸入流(FileReader)以及輸出流(FileWriter)模擬系統中的複製貼上功能:如將D盤下的1.txt複製貼上到C盤中。

思路:

  1. 確定原始檔 d:/1.txt
  2. 確定目的檔案 c:/1.txt
  3. 邊讀邊寫
  4. 釋放資源

注意:
輸入流中的read(陣列)函式的返回值為int型別,返回的是覆蓋陣列中的元素長度,讀取結束標誌是返回值為-1;
每次寫入結束後要使用flush()函式進行重新整理快取。

程式碼:
首先用基本的輸入輸出流實現:

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Test1 {

	public static void main(String[] args){
		
		//1.確定原始檔  d:/1.txt
		FileReader fr=null;
		FileWriter fw=null;
		try {
			fr=new FileReader("d:/1.txt");
			 //2.確定目標檔案   c:/1.txt
			fw=new FileWriter("c:/1.txt");
			//3.邊讀邊寫
			char[] cbuf=new char[3];
			int len=0;   //覆蓋的長度
			while((len=fr.read(cbuf))!=-1){
				fw.write(cbuf,0,len);    //將cbuf陣列中從下標0的位置開始寫入c:/1.txt,寫入陣列中的len個元素。
				fw.flush();
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally {
			//4.釋放資源
			 try {
				fr.close();
				fw.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}

	}

}				

使用緩衝區(提高效率)實現:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;

public class Test2 {

	public static void main(String[] args) throws Exception {
		
		//1.確定原始檔
		//FileReader fr=new FileReader("d:/1.txt");
		//提高效率
		//BufferedReader br=new BufferedReader(fr);
		BufferedReader br=new BufferedReader(new FileReader("d:/1.txt"));
		
		
		//2.確定目的檔案
		
		BufferedWriter bw=new BufferedWriter(new FileWriter("d:/poet.txt"));
		
		//3.邊讀邊寫
		
		String str=null;
		while((str=br.readLine())!=null){
			bw.write(str);
			bw.newLine();
			bw.flush();
		}
		
		//4.釋放資源
		br.close();
		bw.close();

	}

}