下面通过一个例子演示:
package com.test.RWByCharStream;
import java.io.BufferedReader;
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;
//带有缓冲的字符流,从java.txt读入数据并写入java3.txt
public class RWByBufferCharStream {
public static void main(String[] args) {
try {
FileInputStream fis=new FileInputStream("java.txt"); //定义读取文件流
FileOutputStream fos=new FileOutputStream("java3.txt"); //定义写入文件流
InputStreamReader isr=new InputStreamReader(fis);
OutputStreamWriter osw=new OutputStreamWriter(fos);
BufferedReader br=new BufferedReader(isr);
// BufferedWriter bw=new BufferedWriter(osw);
//由于 BufferedWriter会丢失回车换行符,所以用pringWriter来写入,true是指自动刷新缓冲区以保证缓冲区的数据全部写入
PrintWriter pw=new PrintWriter(osw,true);
String input;
while((input=br.readLine())!=null){
// bw.write(input);
pw.println(input);
}
br.close();
// bw.flush(); //BufferedWriter中没有自动刷新缓冲区的参数,所以在这里要手动调用这个方法
// bw.close();
pw.close();
isr.close();
fis.close();
osw.close();
fos.close();
System.out.println("finish!");
} catch (FileNotFoundException e) {
System.out.println("找不到文件");
e.printStackTrace();
} catch (IOException e) {
System.out.println("读取文件失败!");
e.printStackTrace();
}
}
}