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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李志广 中级黑马   /  2012-7-16 12:25  /  1887 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 007lzg 于 2012-7-16 14:46 编辑

import java.io.*;
class CopyText
{
    public static void main(String[] args) throws IOException
        {
        copy();
        }
    public static void copy()
        {
        FileWriter fw=null;
        FileReader fr=null;
        try
        {
            fw=new FileWriter("FileReaderDemo2_copy.txt");
            fr=new FileReader("FileReaderDmeo2.java");
            char[] buf=new char[1024];
            int len=0;
            while((len=fr.read(buf))!=-1)
                {
                fw.write(buf,0,len);
                }
        }
        catch (IOException e)
        {
            throw new RuntimeException("读写有错误!");
        }
        finally
            {
            if(fr!=null)
            try
            {
                fr.close();
            }
            catch (IOException e)
            {
                System.out.println(e.toString());
            }
            if(fw!=null)
            try
            {
                fw.close();
            }
            catch (IOException e)
            {
                System.out.println(e.toString());
            }
            }
        }
}



按照老师视频的步骤写的啊,为什么会有异常呢,能复制文件,但是文件是空的?

6 个回复

倒序浏览
本帖最后由 黑马刘涛 于 2012-7-16 12:37 编辑

请问你CopyText.java所在目录里有FileReaderDmeo2.java这个文件吗?
我自己运行下,可以肯定你是在CopyText.java所在目录找不到FileReaderDmeo2.java这样一个文件,FileReaderDmeo2.java这个好像就是老毕写的例子吧
要不就像完整文件名写出来,比如"D:\\360Downloads\\java基础视频教程\\传智播客_Java培训_毕向东_Java基础源代码Codes\\day18\\FileReaderDmeo2.java"
够详细了吧!!!!
回复 使用道具 举报
请楼主确保两个文件后缀名没有问题,这个无关程序,电脑设置是否隐藏了文件后缀名,这个问题当初导致我半个小时没弄出来。
回复 使用道具 举报
  1. <div class="blockcode"><blockquote>public class Lt {
  2.         public static void main(String[] args) throws IOException
  3.     {
  4.     copy();
  5.     }
  6. public static void copy()
  7.     {
  8.     FileWriter fw=null;
  9.     FileReader fr=null;
  10.    
  11.         try {
  12.                         fw=new FileWriter("Lt.txt");
  13.                           fr=new FileReader("Lt.java");
  14.         char[] buf=new char[1024];
  15.         int len=0;
  16.         while((len=fr.read(buf))!=-1)
  17.             {
  18.             fw.write(buf,0,len);
  19.             }
  20.                 } catch (IOException e1) {
  21.                         e1.printStackTrace();
  22.                 }
  23.       
  24.    
  25.   
  26.     finally
  27.         {
  28.         if(fr!=null)
  29.         try
  30.         {
  31.             fr.close();
  32.         }
  33.         catch (IOException e)
  34.         {
  35.             System.out.println(e.toString());
  36.         }
  37.         if(fw!=null)
  38.         try
  39.         {
  40.             fw.close();
  41.         }
  42.         catch (IOException e)
  43.         {
  44.             System.out.println(e.toString());
  45.         }
  46.         }
  47.     }
  48. }
复制代码
我把你的catch改了下,使用系统的提示,然后错误信息
  1. java.io.FileNotFoundException: Lt.java (系统找不到指定的文件。)
  2.         at java.io.FileInputStream.open(Native Method)
  3.         at java.io.FileInputStream.<init>(Unknown Source)
  4.         at java.io.FileInputStream.<init>(Unknown Source)
  5.         at java.io.FileReader.<init>(Unknown Source)
  6.         at luo.cheng.Lt.copy(Lt.java:20)
  7.         at luo.cheng.Lt.main(Lt.java:11)
复制代码
又在工作空间找文件,发现只有lt.txt文件。
终于发现问题,程序这个代码程序运行的路径,跟保存这个lt.java的路径不一样。默认这个代码运行程序的路径是项目文件夹下的,而.java保存的路径是src文件夹下的包名文件夹里面的。


评分

参与人数 1技术分 +1 收起 理由
刘笑 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 黑马-王言龙 于 2012-7-16 13:00 编辑

出错原因:FileReaderDmeo2.java文件在编译时没找到
new FileWriter("FileReaderDemo2_copy.txt");
会创建一个新的文件,可由于要copy的原文件不存在(或没有放在编译时目录下),copy过程不成功,结果就出现了一个空的FileReaderDemo2_copy.txt文件
回复 使用道具 举报
(1)检查下你的文件名称有没有写错,少个字母啥的,这个很容易出错,最好就是直接拷贝要读取的文件的名称
(2)检查你的路径配置的有没有出错,文件系统有没有找到要读取的文件的路径
回复 使用道具 举报
谢谢各位,粗心大意啊{:soso_e144:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马