黑马程序员技术交流社区

标题: 求助哇:IO复制文件 [打印本页]

作者: 卢祥洲    时间: 2013-6-24 11:44
标题: 求助哇:IO复制文件
本帖最后由 卢祥洲 于 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. }
复制代码

作者: 王靖远    时间: 2013-6-24 12:08
本帖最后由 王靖远 于 2013-6-24 12:25 编辑

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


作者: 王靖远    时间: 2013-6-24 12:29
if(fw!=null){

                                try{

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

                                }        catch(IOException e){}


作者: 卢祥洲    时间: 2013-6-24 12:38
王靖远 发表于 2013-6-24 12:29
if(fw!=null){

                                try{

哎呀妈呀,真这错误,找了2天没找出来,惭愧!谢啦!
作者: 卢祥洲    时间: 2013-6-24 12:39
尹桥印 发表于 2013-6-24 12:33
楼主,你关流关错了。关成两个读取流了,你的写入流没关。个人观点

3QU!的确是流没关闭!
作者: 你的☞样子    时间: 2013-6-24 14:04
第一个fr.close()改为fw.close()




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