/*
 * 功能:演示缓冲字符流
 */
package demoString;
import java.io.*;
public class DemoBuffer { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
        //先创建FileReader,再强转成BufferedReader,BufferedReader缓存,为了速度快
FileReader fr=null;
FileWriter fw=null;
BufferedReader br=null;
BufferedWriter bw=null;
try {
fr=new FileReader("d:\\aaa.txt");
br=new BufferedReader(fr);
fw=new FileWriter("d:\\bbb.txt");
bw=new BufferedWriter(fw);
//循环读取
String s="";
while((s=br.readLine())!=null){
//System.out.println(s);
//输出到磁盘
bw.write(s);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
fr.close();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}}

解决方案 »

  1.   

    fw.close();
    后面加:
    bw.close()
      

  2.   

    因为Java很聪明,知道缓存,增强IO,保护磁盘,所以:
      bw.write(s);
    之后加上:
      bw.flush();
      

  3.   

    谢谢  了  问题解决了  但是  我现在不懂 为什么 是 这两个br.close(); bw.close();  而不是fr.close(); 和  fw.close();
      

  4.   

    规则就是调用最外层包装类的close(),因为它会负责调用内层(被包装)类的close()。