黑马程序员技术交流社区

标题: IO 流 [打印本页]

作者: 姚志华    时间: 2011-10-5 21:51
标题: IO 流
public  static  void copy1(){
  FileWriter fw=null;
  FileReader fr=null;
  BufferedReader bufr=null;
  BufferedWriter bufw=null;
  
  try {
   fw=new FileWriter("demo.txt",true);
   fr=new FileReader("copy.txt");
   
   bufr=new BufferedReader(fr);
   bufw=new BufferedWriter(fw);
   String line=null;
   
   while((line=bufr.readLine())!=null){
   
    bufw.write(line);
   
   
   }
   
  } catch (IOException e) {
   e.printStackTrace();
  }finally{
   if(fr!=null){
    try {
     fr.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
   if(fw!=null){
    try {
     fw.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
   
  }

谁能告诉我这段程序哪不对,为什么复制不了?程序没有报错.再有,如果BufferedReader建一个缓存区, BufferedWriter的时候再建一个是不是重了,能只建一个吗?
作者: 匿名    时间: 2011-10-5 22:14
没有刷新吧
作者: 曾公亮    时间: 2011-10-5 22:56
不好意思,刚刚弄错了,复制文件最好用字节流。
改两个地方:
将bufw.write(line);
换成:
bufw.write(line,0,line.length());

再写上:bufw.flush();
[ 本帖最后由 曾公亮 于 2011-10-05  23:14 编辑 ]
作者: 匿名    时间: 2011-10-5 23:22
调用flush方法,将字节发出。
作者: 匿名    时间: 2011-10-5 23:27
没有复制的直接原因是,没有涮洗缓冲字节流。缓冲流循环写入时,每次调用write()方法后都要刷新。
在bufw.write(line); 后加一句bufw.flush();就解决问题了
作者: 姚志华    时间: 2011-10-6 11:52
我这样改完还是不行
while((line=bufr.readLine())!=null){
                               
                                bufw.write(line);
                                bufw.newLine();
                                bufw.flush();
                               
                        }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2