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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 月老~牵红线 中级黑马   /  2014-12-9 18:34  /  1213 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天在做IO流的一个小练习:将C盘一个文本文件复制到D盘(本例中是在同一目录下进行文件复制)。
  1. import java.io.*;
  2. class CopyText
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 FileWriter fw=null;
  7.                 FileReader fr=null;
  8.                 try
  9.                 {
  10.                         fw=new FileWriter("Demo_copy.txt");
  11.                         fr=new FileReader("Demo.java");
  12.                         int coun=fr.read();
  13.                         while (coun!=-1)
  14.                         {
  15.                                 fw.write(coun);//单个字符进行写入,读一个写一个
  16.                         }               
  17.                 }
  18.                 catch (IOException e)
  19.                 {
  20.                         throw new RuntimeException("读写失败");
  21.                 }
  22.                 finally
  23.                 {
  24.                         if(fr!=null)
  25.                                 try{fr.close();}catch (IOException e){}
  26.                         if(fw!=null)
  27.                                 try{fw.close();}catch (IOException e){}
  28.                 }
  29.         }
  30. }
复制代码
运行的时候出现这样的问题:


在ctrl+c停止后,刷新目录出现


复制的文件比源文件大得多,而且程序运行的时间越长,Demo_copy.txt越大。
我将上面while循环进行更改:
int coun=0;
while ((coun=fr.read())
!=-1)
{
fw.write(coun);
}
再次程序运行无误,文件复制成功。请问这是什么情况呢?

4 个回复

正序浏览
coun的值一直为第一次读到的内容,循环停不下来。
回复 使用道具 举报
复制出的文档中应该全是同一个字符

点评

复制的文档打不开,每次打开文档都提示无响应,不知道为什么  发表于 2014-12-9 21:22
回复 使用道具 举报
你上面就读了一次  :L  循环停不下来了
int coun=fr.read();
                        while (coun!=-1)
                        {
                                fw.write(coun);//单个字符进行写入,读一个写一个
                        }           
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马