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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 付左军 中级黑马   /  2012-5-14 16:41  /  1584 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.*;
  2. class CopyDemo
  3. {
  4.         public static void main(String [] args)
  5.         {
  6.                 copy();
  7.         }
  8.         public static void copy()
  9.         {
  10.                 FileReader fr=null;
  11.                 FileWriter fw=null;
  12.                 try
  13.                 {
  14.                         fr=new FileReader("D:\\葵花宝典.txt");
  15.                         fw= new FileWriter("F:\\葵花宝典复制版.txt");
  16.                         char[] buf=new char[1024];
  17.                         int len=0;
  18.                         while((len=fr.read())!=-1)
  19.                         {
  20.                                 fw.write(buf,0,len);
  21.                         }
  22.                 }
  23.                 catch(IOException e)
  24.                 {
  25.                         System.out.println("读写失败");
  26.                 }
  27.                 finally
  28.                 {
  29.                         if (fr!=null)
  30.                         {
  31.                                 try
  32.                                 {
  33.                                         fr.close();
  34.                                 }
  35.                                 catch(Exception e)
  36.                                 {

  37.                                 }
  38.                         }
  39.                         if (fw!=null)
  40.                         {
  41.                                 try
  42.                                 {
  43.                                         fw.close();
  44.                                 }
  45.                                 catch(Exception e)
  46.                                 {

  47.                                 }
  48.                         }
  49.                 }
  50.         }
  51. }
复制代码
编译通过运行时提示“main”角标越界

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
第18行代码while((len=fr.read())!=-1);这根本就不是再往数组里面读写,请改为while((len=fr.read(buf))!=-1);
这样才是往数组中存放内容。

点评

额, 谢了  发表于 2012-5-14 17:31

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 小小企鹅 于 2012-10-27 22:36 编辑

while((len=fr.read())!=-1) 只读了一个字符,也没有将内容赋值给buf,可以改为 while((len=fr.read(buf))!=-1)
public static void main(String[] args)
        {
                Copy copyfile= new Copy();
        }
        Copy(){
                 try {
                         copyFromTo("abc.txt","abc_copy.txt");
                 }catch(IOException e){
                         throw new RuntimeException("读写失败!");
                 }
        }
        public void copyFromTo(String from, String to) throws IOException {
                FileReader fr = new FileReader(from);
                FileWriter fw = new FileWriter(to);
                char[] buf = new char[1024];
                int num = 0;
                while((num = fr.read(buf)) != -1)
                {
                        String str = new String(buf,0,num);
                        fw.write(str);
                }
                fr.close();
                fw.close();
        }

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

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