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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 卢祥洲 中级黑马   /  2013-6-24 11:44  /  1489 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 卢祥洲 于 2013-6-24 12:40 编辑

按照毕老师讲的用数组的方式复制C盘下一个文件(FileReaderDemo01.java)到D盘中的一个文件(SystemDemo_copy.txt)里面。但是发现只建立了SystemDemo_copy.txt空白文件,没有往里面写入FileReaderDemo01.java里面的内容,大家帮忙看看代码哪里出错了啊!?
  1. import java.io.*;
  2. public class CopyTextDemo03{
  3.         public static void main(String[] args) throws IOException{
  4.                         copy_2();
  5.         }        
  6.         //先读取字符串,然后把字符串写入文件中。
  7.         public static void copy_2(){
  8.                 FileWriter fw = null;
  9.                 FileReader fr = null;
  10.                 try{
  11.                         fw = new FileWriter("SystemDemo_copy.txt");
  12.                         fr = new FileReader("FileReaderDemo01.java");
  13.                         char[] buf = new char[1024];
  14.                         int len = 0;
  15.                         while((len=fr.read(buf))!=-1){
  16.                                 //System.out.println(new String(buf,0,len));
  17.                                 fw.write(buf,0,len);        
  18.                         }
  19.                 }catch(IOException e){
  20.                                 throw new RuntimeException("读写失败");        
  21.                 }finally{
  22.                         if(fw!=null){
  23.                                 try{
  24.                                         fr.close();        
  25.                                 }        catch(IOException e){}
  26.                         }        
  27.                         if(fr!=null){
  28.                                 try{
  29.                                         fr.close();        
  30.                                 }        catch(IOException e){}
  31.                         }
  32.                 }
  33.         }        
  34. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1 我喜欢这样提问题的方式

查看全部评分

6 个回复

正序浏览
第一个fr.close()改为fw.close()
回复 使用道具 举报
尹桥印 发表于 2013-6-24 12:33
楼主,你关流关错了。关成两个读取流了,你的写入流没关。个人观点

3QU!的确是流没关闭!
回复 使用道具 举报
王靖远 发表于 2013-6-24 12:29
if(fw!=null){

                                try{

哎呀妈呀,真这错误,找了2天没找出来,惭愧!谢啦!
回复 使用道具 举报
if(fw!=null){

                                try{

                                        fr.close();        //这里写fw.close()就行了。或者刷新一下。

                                }        catch(IOException e){}

评分

参与人数 1技术分 +2 收起 理由
特殊服务 + 2 细节决定成败。给你两分

查看全部评分

回复 使用道具 举报
本帖最后由 王靖远 于 2013-6-24 12:25 编辑

read() 读取单个字符。
read(char[],int off,int len)将字符读入数组的某一部分
这是FileReader的read方法 是不是这里写的有问题

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