黑马程序员技术交流社区

标题: 关于文件目录的递归显示? [打印本页]

作者: simonqian    时间: 2013-5-23 21:45
标题: 关于文件目录的递归显示?
本帖最后由 simonqian 于 2013-5-28 21:32 编辑
  1. package com.one;

  2. import java.io.File;

  3. public class FileDemo
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 File file = new File("d:\\adb");//把这里改成d:\\为什么d盘下目录不能全部显示,反而空指针异常呢?求解
  8.                 showDir(file);
  9.         }
  10.         public static void showDir(File file)
  11.         {
  12.                 File[] dir = file.listFiles();
  13.                 for(File f :dir)
  14.                 {
  15.                         if(f.isDirectory())
  16.                                 showDir(f);
  17.                         else
  18.                                 System.out.println(f.toString());
  19.                 }
  20.                
  21.         }

  22. }

复制代码

作者: mvplee    时间: 2013-5-23 22:10
  1. package org.sky.io;

  2. import java.io.File;

  3. public class TestDisplayFile {
  4.         public static void main(String[] args) {
  5.                 list(new File("E:"+File.separator));
  6.         }

  7.         public static void list(File file){
  8.                 if(file.isDirectory()){
  9.                         File[] temp = file.listFiles();
  10.                         if(temp!=null){
  11.                                 for (int i = 0; i < temp.length; i++) {
  12.                                         list(temp[i]);
  13.                                 }
  14.                         }
  15.                 }else{
  16.                         System.out.println(file);
  17.                 }
  18.         }
  19. }
复制代码
在listFiles()方法之前先判断是否是目录!
返回File[]最好也判断,null或长度!

作者: mvplee    时间: 2013-5-23 22:13
可能出现null的有:
1、showDir(File file)中file参数
2、File[] temp = file.listFiles();中的File[],你检查一下!

下次把报错信息帖出来,没......图......你说........


作者: 谢孔营    时间: 2013-5-23 22:17
那是因为盘符不是文件夹或者文件,可以用文件夹路径,或者文件路径来创建文件对象
但不能用盘符来创建文件对象。
作者: 陈潜    时间: 2013-5-24 00:52
楼主同样的代码我可以顺利跑 没有异常,
File file = new File("d:\\adb");//把这里改成d:\\为什么d盘下目录不能全部显示,反而空指针异常呢?求解
这句话我换成d:\\ 也可以执行
如果d:\\adb是空指针的话,可能是adb这个文件夹不存在,建议在showDir中判断下file.exists() 如果不存在就返回;
作者: 袁梦希    时间: 2013-5-24 01:30
mvplee 发表于 2013-5-23 22:13
可能出现null的有:
1、showDir(File file)中file参数
2、File[] temp = file.listFiles();中的File[],你检 ...

头像很给力
作者: 袁梦希    时间: 2013-5-24 01:31
楼主你好,如果问题以解决,请修改分类,谢谢合作。


作者: mvplee    时间: 2013-5-24 09:26
袁梦希 发表于 2013-5-24 01:30
头像很给力

本人长的也很给力!
作者: 吕振中    时间: 2013-5-24 12:10
不懂,路过!




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