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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余海龙 黑马帝   /  2012-2-21 12:14  /  2429 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 余海龙 于 2012-2-24 21:43 编辑

package cn.itcast.file;

import java.io.File;

public class FileDemo3 {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                File file = new File("F:\\java");
                getFiles(file);
        }
        // 列出指定目录下的文件夹

        private static void getFiles(File file) {
                // TODO Auto-generated method stub
                System.out.println(file.getName());
                File[] files = file.listFiles();
                for(File f : files){             //如果file文件夹中没有内容,会出现空指针异常的, 这里为什么不会报空指针异常呢?
                        if(f.isDirectory()){
                                getFiles(f);
                        }else{
                                System.out.println(f.getName());
                        }
                }
        }

}

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

3 个回复

倒序浏览
public File[] listFiles()
返回:
抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录。如果目录为空,那么数组也将为空。如果抽象路径名不表示一个目录,或者发生 I/O 错误,则返回 null。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
如果file文件夹中没有内容,那么file.listFiles()返回的不是null,而是一个零长度的数组,也被叫做空数组,空数组也是一个对象,只不过长度为零,而只有当抽象路径"F:\\java"不表示一个目录的时候才会返回null,才会出现空指针异常。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
for(File f : files){             //如果file文件夹中没有内容,会出现空指针异常的, 这里为什么不会报空指针异常呢?
                        if(f.isDirectory()){
                                getFiles(f);
                        }
因为如果file文件夹中没有内容。for循环是进不去的。不执行啊。
你把它改成普通for循环就知道了。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

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