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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© run_wind 中级黑马   /  2014-12-1 23:55  /  1556 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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]吗

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 淡定

查看全部评分

7 个回复

倒序浏览
本帖最后由 奋斗的蜗牛ksd 于 2014-12-2 01:17 编辑

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

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

回复 使用道具 举报
本帖最后由 奋斗的蜗牛ksd 于 2014-12-2 01:09 编辑

还有你题目的目的是想做什么?输出doc文件名?
回复 使用道具 举报
File[] files = f.listFiles();中的files可能会为空,从而导致空指针异常,要判断其是否为空!
回复 使用道具 举报
亲,你是不是应该传个目录进去才通呢?另外printDir里是不是应该增加一些建壮性的判断比较合理呢?
回复 使用道具 举报
listFiles被调用的时候该File文件里面初始化的应该是路径,而不是具体文件名
回复 使用道具 举报
是file[null]吧,file[0]代表有一个文件
回复 使用道具 举报
太深奥了,完全不懂啊,我要努力
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马