天天看點

java的IO流中使用五種不同方法實作檔案的複制功能

在java的IO流中學習了五種不同的讀檔案寫檔案的方法,這裡将綜合利用這五種不同的方法編寫這五種實作檔案複制的代碼,熟練掌握IO基本流和IO緩沖流。以下是代碼的實作。

①基本流一次讀一個字元

②基本流一次讀一個數組

③緩沖流一次讀一個字元

④緩沖流一次讀一個數組

⑤緩沖流一次讀寫一個字元串

最重要的是要掌握第⑤種用緩沖流每次讀取一行的字元串的寫法,但是要注意的是BufferedReader中的readLine()方法中一次讀取一行資料,但是不包括讀取換行符,是以需要調用BufferedWriter中的newLine()方法進行換行。

package zjh;

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

/*
  * 用五種方法實作文本檔案的複制
  * 重點 是掌握最後一種緩沖流每次讀寫一個一行字元串的方法 ,緩沖流對比與基本流的好處是更加高效
 */
public class CopyFileTest {
	public static void main(String[] args) throws IOException {
		
		String srcFileName = "sourceFile.txt";
	    String endFileName = "copyFile.txt";
	    
	    method1(srcFileName,endFileName);
	    method2(srcFileName,endFileName);
	    method3(srcFileName,endFileName);
	    method4(srcFileName,endFileName);
	    method5(srcFileName,endFileName);
	}
           

為了友善講述我把每種方法單獨放在一個代碼塊

基本流一次讀一個字元

public static void method1(String srcFileName,String endFileName) throws IOException {
		FileReader fr = new FileReader(srcFileName);
		FileWriter fw = new FileWriter(endFileName);
		
		int ch;
		while((ch=fr.read())!=-1) {
			fw.write(ch);
		}
		fw.close();
		fr.close();
	}
           

基本流一次讀一個數組

public static void method2(String srcFileName,String endFileName) throws IOException {
		FileReader fr = new FileReader(srcFileName);
		FileWriter fw = new FileWriter(endFileName);
		
		char[] chs = new char[1024];
		int len;
		while((len=fr.read(chs))!=-1) {
			fw.write(chs,0,len);
		}
		fw.close();
		fr.close();
	}
           

緩沖流一次讀一個字元

public static void method3(String srcFileName,String endFileName) throws IOException {
   	BufferedReader br = new BufferedReader(new FileReader(srcFileName));
   	BufferedWriter bw = new BufferedWriter(new FileWriter(endFileName));
   	
   	int ch;
   	while((ch=br.read())!=-1) {
   		bw.write(ch);
   	}
   	bw.close();
   	br.close();
   }
           

緩沖流一次讀一個數組

public static void method4(String srcFileName,String endFileName) throws IOException {
		BufferedReader br = new BufferedReader(new FileReader(srcFileName));
		BufferedWriter bw = new BufferedWriter(new FileWriter(endFileName));
		
		char[] chs = new char[1024];
		int len;
		while((len=br.read(chs))!=-1) {
			bw.write(chs,0,len);
		}
		bw.close();
		br.close();
	}
           

緩沖流一次讀寫一個字元串

public static void method5(String srcFileName,String endFileName) throws IOException {
		BufferedReader br = new BufferedReader(new FileReader(srcFileName));
		BufferedWriter bw = new BufferedWriter(new FileWriter(endFileName));
		
		String line;
		while((line=br.readLine())!=null) {
			bw.write(line);
			bw.newLine();//readLine()不讀取換行符,需要手動添加newLine()方法
			bw.flush();
		}
		bw.close();
		br.close();
	}
	}