黑马程序员技术交流社区

标题: 悲剧,这么晚了bug找不到,头痛…… [打印本页]

作者: 彭波    时间: 2013-3-25 21:46
标题: 悲剧,这么晚了bug找不到,头痛……
本帖最后由 彭波 于 2013-3-26 08:33 编辑
  1. /*
  2. 列出指定目录下文件或者文件夹,包含子目录中的内容。
  3. 也就是列出指定目录下所有内容


  4. */

  5. import java.io.*;
  6. class FileDemo3
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                         File dir = new File("d:\\java0217");
  11.                         showDir(dir);
  12.         
  13.         }
  14.         
  15.         public static String getLevel(int level)
  16.         {
  17.                         StringBuilder sb = new StringBuilder();
  18.                         for(int x=0; x<level; x++)
  19.                         {
  20.                                 sb.append(" ");        
  21.                         }
  22.                         return sb.toString();
  23.         
  24.         }
  25.         
  26.         public static void showDir(File dir, int level)
  27.         {
  28.                 System.out.println(getLevel(level)+dir.getName());
  29.                
  30.                 level++;
  31.                 File[] files = dir.listFiles();
  32.                 for(int x=0; x<files.length; x++)
  33.                 {
  34.                         if(files[x].isDirectory())//判断是否为目录
  35.                                 showDir(files[x], level);//递归调用
  36.                         else
  37.                                 System.out.println(getLevel(level)+files[x]);        
  38.                 }
  39.         }
  40. }
复制代码
{:soso_e118:}

找不到bug,求解???
作者: 胡志超    时间: 2013-3-25 21:52
public static void main(String[] args)
        {
                        File dir = new File("d:\\java0217");
                        showDir(dir);//这里你调用方法时传参错了,少传了一个参数
        
        }
作者: 魏福伟    时间: 2013-3-25 21:53
showDir(dir);

public static void showDir(File dir, int level)

这两句,方法定义接收两个参数,调用时就传一个参数
作者: itserious    时间: 2013-3-25 21:59
你需要添加健壮性判断:

  if(dir.exists()){
                                 files = dir.listFiles();
                                 
                        }else{
                                System.out.println("该目录或文件不存在");
                                return;
                        }
作者: 彭波    时间: 2013-3-26 08:32
嗯,谢谢大家,是第14行showDir(dir);少传参数了,但编译报错却在24行,哎,终于解决啦
作者: 彭波    时间: 2013-3-26 08:50
itserious 发表于 2013-3-25 21:59
你需要添加健壮性判断:

  if(dir.exists()){

  1.                 if(dir.exists())
  2.                 {
  3.                         File[] files = dir.listFiles();
  4.                 }
  5.                 else
  6.                 {
  7.                         System.out.println("目录不存在");       
  8.                         return;
  9.                 }
复制代码
加这个想法很好,可是加了就有错误提示,怎么解决啊??
37行已经有了,还需要加吗?
  if(files[x].isDirectory())//判断是否为目录




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