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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 彭波 中级黑马   /  2013-3-25 21:46  /  2213 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 彭波 于 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,求解???

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

5 个回复

正序浏览
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())//判断是否为目录
回复 使用道具 举报
嗯,谢谢大家,是第14行showDir(dir);少传参数了,但编译报错却在24行,哎,终于解决啦
回复 使用道具 举报
你需要添加健壮性判断:

  if(dir.exists()){
                                 files = dir.listFiles();
                                 
                        }else{
                                System.out.println("该目录或文件不存在");
                                return;
                        }

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
showDir(dir);

public static void showDir(File dir, int level)

这两句,方法定义接收两个参数,调用时就传一个参数

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
public static void main(String[] args)
        {
                        File dir = new File("d:\\java0217");
                        showDir(dir);//这里你调用方法时传参错了,少传了一个参数
        
        }

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

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