java-IO操作——使用帶有緩衝的字元流讀寫資料
阿新 • • 發佈:2019-01-31
使用BufferedReader和PrintWriter實現檔案拷貝
package Test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
public class RWByBufferedCharStream {
public static void main(String[] args) {
try {
FileInputStream fis=new FileInputStream("test.txt");
InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
FileOutputStream fos=new FileOutputStream("test_new.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos,"UTF-8");
BufferedReader br=new BufferedReader(isr);
// BufferedWriter bw=new BufferedWriter(osw);
//為了保留換行符我們使用PrintWriter,PrintWriter和BufferedWriter非常相似
PrintWriter pw=new PrintWriter(osw,true);
String input;
while((input=br.readLine())!=null){
// bw.write(input);
pw.println(input);
}
// bw.close();
//在把輸出流關掉之前使用flush()將當前的所有緩衝區的資料強制輸出,保證資料一定是完整的
//但是使用PrintWriter的時候,可以使用一個布林型別的引數,把他指定為true,
//這樣在呼叫println()和printf的時候,當前緩衝區的內容就會被強制輸出
//但是使用Buffer的時候就沒有這個,在流關閉之前一定要呼叫flush()方法把緩衝區的內容牆紙刷出,以免丟失
// pw.flush();
pw.close();
br.close();
isr.close();
fis.close();
osw.close();
fos.close();
System.out.println("done");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}