黑马程序员技术交流社区

标题: 递归,列出名字,但是空指针异常 [打印本页]

作者: run_wind    时间: 2014-12-1 23:55
标题: 递归,列出名字,但是空指针异常
import java.io.File;

/**
*
* 打印一个目录下所有子文件
*
*/
public class DiguiDemo
{
        public static void main(String[] args)
        {
                File f = new File("E:\\黑马\\Java面试宝典2013版.doc");
               
                printDir(f);
        }
       
        public static void printDir(File f)
        {
                File[] files = f.listFiles();
               
                for (int x=0;x<files.length;x++)
                {
                        if (files[x].isDirectory())
                                printDir(files[x]);
                        else
                                System.out.println(files[x].toString());
                }               
        }
}
为什么会有空指针异常呢,直接传个文件不是应该是files[0]吗


作者: 奋斗的蜗牛ksd    时间: 2014-12-2 00:59
本帖最后由 奋斗的蜗牛ksd 于 2014-12-2 01:17 编辑

File f = new File("E:\\黑马\\Java面试宝典2013版.doc");

你的new File 里面 传入的是一个  后缀为doc的目录, 该目录是空的。所以空指针异常


作者: 奋斗的蜗牛ksd    时间: 2014-12-2 01:04
本帖最后由 奋斗的蜗牛ksd 于 2014-12-2 01:09 编辑

还有你题目的目的是想做什么?输出doc文件名?

作者: 这是我的地盘    时间: 2014-12-2 01:10
File[] files = f.listFiles();中的files可能会为空,从而导致空指针异常,要判断其是否为空!
作者: 菜鸟一号    时间: 2014-12-2 08:55
亲,你是不是应该传个目录进去才通呢?另外printDir里是不是应该增加一些建壮性的判断比较合理呢?
作者: ppStudent    时间: 2014-12-2 09:33
listFiles被调用的时候该File文件里面初始化的应该是路径,而不是具体文件名
作者: wangzheng406    时间: 2014-12-2 11:25
是file[null]吧,file[0]代表有一个文件
作者: ls61532529    时间: 2014-12-2 23:10
太深奥了,完全不懂啊,我要努力




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