黑马程序员技术交流社区

标题: 空指针问题 [打印本页]

作者: 余海龙    时间: 2012-2-21 12:14
标题: 空指针问题
本帖最后由 余海龙 于 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());
                        }
                }
        }

}

作者: 刘基军    时间: 2012-2-21 12:29
public File[] listFiles()
返回:
抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录。如果目录为空,那么数组也将为空。如果抽象路径名不表示一个目录,或者发生 I/O 错误,则返回 null。
作者: 胡威    时间: 2012-2-21 12:47
如果file文件夹中没有内容,那么file.listFiles()返回的不是null,而是一个零长度的数组,也被叫做空数组,空数组也是一个对象,只不过长度为零,而只有当抽象路径"F:\\java"不表示一个目录的时候才会返回null,才会出现空指针异常。
作者: 黑马唐浩    时间: 2012-2-21 12:49
for(File f : files){             //如果file文件夹中没有内容,会出现空指针异常的, 这里为什么不会报空指针异常呢?
                        if(f.isDirectory()){
                                getFiles(f);
                        }
因为如果file文件夹中没有内容。for循环是进不去的。不执行啊。
你把它改成普通for循环就知道了。





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