黑马程序员技术交流社区

标题: 编译通过,运行是出现问题 [打印本页]

作者: 付左军    时间: 2012-5-14 16:41
标题: 编译通过,运行是出现问题
  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”角标越界
作者: 赵玮_Tom    时间: 2012-5-14 17:08
第18行代码while((len=fr.read())!=-1);这根本就不是再往数组里面读写,请改为while((len=fr.read(buf))!=-1);
这样才是往数组中存放内容。
作者: 小小企鹅    时间: 2012-5-14 18:18
本帖最后由 小小企鹅 于 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();
        }




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