在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();
}
}