黑马程序员技术交流社区

标题: 打印出该文件夹下所有的.java文件, 直接输入盘符e:\ 空指针... [打印本页]

作者: 星空@3    时间: 2016-7-8 18:43
标题: 打印出该文件夹下所有的.java文件, 直接输入盘符e:\ 空指针...
我知道怎么解决, 就是不知道为什么会报空指针异常??
<div class="blockcode"><blockquote>package fuxiIO;

import java.io.File;
import java.util.Scanner;

public class Test07_SameName {
        /*
         *  需求:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名 ** 分析: 从键盘接收一个文件夹路径
         * 1,如果录入的是不存在,给与提示 2,如果录入的是文件路径,给与提示 3,如果是文件夹路径,直接返回
         *
         */


        public static void main(String[] args) {
                File file = getDir();
                getJavaFile(file);
        }

        private static File getDir() {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个文件夹路径:");
                while (true) {
                        String s = sc.nextLine();
                        File dir = new File(s);
                        if (!dir.exists()) {
                                System.out.println("您输入的文件夹不存在,请重新输入!");
                        } else if (dir.isFile()) {
                                System.out.println("您输入的是文件路径,请输入文件夹路径!");
                        } else {
                                return dir;
                        }

                }
        }

        private static void getJavaFile(File file) {
                File[] listfile = file.listFiles();

                        for (File file2 : listfile) {
                                if (file2.isFile() && file2.getName().endsWith(".java")) {
                                        System.out.println(file2);
                                } else if (file2.isDirectory()) {
                                        getJavaFile(file2);
                                }
                        }
        }

}
</blockquote></div><br />
作者: 星空@3    时间: 2016-7-9 09:17
这个有大神知道么?
作者: cat73    时间: 2016-7-9 11:20
错误信息呢?
哪一行的异常?
作者: 我是你岁哥❤环    时间: 2016-7-9 16:55
本帖最后由 我是你岁哥❤环 于 2016-7-9 16:58 编辑

在进行for循环之前,先进行判断
  1. if(listfile != null){
  2.        for (File file2 : listfile) {
  3.               if (file2.isFile() && file2.getName().endsWith(".java")) {
  4.                        System.out.println(file2);
  5.                } else if (file2.isDirectory()) {
  6.                         getJavaFile(file2);
  7.                }
  8.        }
  9. }
复制代码
出现空指针异常,是因为windows的一些系统文件造成的,加上这个判断,就没有问题了






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