黑马程序员技术交流社区

标题: 关于文本文件复制的一个小问题 [打印本页]

作者: 月老~牵红线    时间: 2014-12-9 18:34
标题: 关于文本文件复制的一个小问题
今天在做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);
}
再次程序运行无误,文件复制成功。请问这是什么情况呢?

作者: 有陷阱快跑丶    时间: 2014-12-9 19:15
你上面就读了一次  :L  循环停不下来了
int coun=fr.read();
                        while (coun!=-1)
                        {
                                fw.write(coun);//单个字符进行写入,读一个写一个
                        }           
作者: 有陷阱快跑丶    时间: 2014-12-9 19:17
复制出的文档中应该全是同一个字符
作者: Cfan_yang    时间: 2014-12-10 14:51
coun的值一直为第一次读到的内容,循环停不下来。




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