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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵嘉男 中级黑马   /  2012-4-26 23:45  /  2018 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;
public class app10
{
  public static void main(String args[])throws Exception
{String str=new String();
  try{InputStreamReader isr=new InputStreamReader(System.in);
      BufferedReader in=new BufferedReader(isr);
      String sdir="F:\\c";
      String sfile;
      File Fdir1=new File(sdir);
      if(Fdir1.exists()&&Fdir1.isDirectory())
       {
         System.out.println("目录:"+sdir+"已经存在");
         for(int i=0;i<=Fdir1.list().length;i++)
          System.out.println((Fdir1.list())[i]);
          File Fdir2=new File("F:\\c\\k");
          if(!Fdir2.exists())
          Fdir2.mkdir();
         System.out.println();
         System.out.println("建立新目录后的文件列表");
         for(int i=0;i<=Fdir1.list().length;i++)
         System.out.println((Fdir1.list())[i]);         
       }
      System.out.println("请输入该目录的一个文件名");
      sfile=in.readLine();
      File Ffile=new File(Fdir1,sfile);
      if(Ffile.isFile())
      {System.out.print("文件名:"+Ffile.getName());
       System.out.print(";所在目录:"+Ffile.getPath());
       System.out.println(";文件大小:"+Ffile.length()+"字节");
       }
       }
   catch(IOException e)
   { System.out.println(e.toString());
    }
    catch(ArrayIndexOutOfBoundsException e)
    {System.out.println("错误");}
}
}
F盘里面有c文件,c文件里面a.txt和d文件,d文件里面有b.txt,怎么一打印就出错呢

2 个回复

倒序浏览
兄弟!我想我该提醒你点东西!
你这个错误是因为这句话:
for(int i=0;i<=Fdir1.list().length;i++)
这里总共两处的等号是不要的!如果要这个等号就是越界了!
如果你把异常输出的话:
java.lang.ArrayIndexOutOfBoundsException: 2
        at com.test.app10.main(app10.java:17)
很明显是数组越界。而你选择了答应硬编码。这样就看不到异常了。
还有个东西就是你的这个代码中最好是类名的第一个字母大写。
这个是最基本的。一般类名的第一个字母是要求大写。
个人一点小建议!谢谢!
回复 使用道具 举报
for(int i=0;i<=Fdir1.list().length;i++)
   System.out.println((Fdir1.list())[i]);

每次都是i<=Fdir1.list().length
length是list的长度,
当i=Fdir1.list().length,就数组索引越界了,就打印错误
改为i<Fdir1.list().length
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马