A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 姚志华 黑马帝   /  2011-10-5 21:51  /  1851 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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的时候再建一个是不是重了,能只建一个吗?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

8 个回复

倒序浏览
黑马网友  发表于 2011-10-5 22:14:49
沙发
没有刷新吧
回复 使用道具 举报
不好意思,刚刚弄错了,复制文件最好用字节流。
改两个地方:
将bufw.write(line);
换成:
bufw.write(line,0,line.length());

再写上:bufw.flush();
[ 本帖最后由 曾公亮 于 2011-10-05  23:14 编辑 ]

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-10-5 23:22:38
板凳
调用flush方法,将字节发出。
回复 使用道具 举报
黑马网友  发表于 2011-10-5 23:27:07
报纸
没有复制的直接原因是,没有涮洗缓冲字节流。缓冲流循环写入时,每次调用write()方法后都要刷新。
在bufw.write(line); 后加一句bufw.flush();就解决问题了
回复 使用道具 举报
我这样改完还是不行
while((line=bufr.readLine())!=null){
                               
                                bufw.write(line);
                                bufw.newLine();
                                bufw.flush();
                               
                        }

评分

参与人数 1黑马币 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马