没毛病!!!
public class Demo {
private static void search(File f) {
//1.获取文件数组
File[] ff = f.listFiles();
//2.通过for-each语句获取数组当中所有的文件
for (File file : ff) {
//2.1 判断是否是文件夹/目录,如果是使用递归再次判断
if(file.isDirectory()) {
search(file);
//2.2 满足两个条件:其一是文件;其二是文件名称后缀以.java结束
} else if(file.isFile() && file.getName().endsWith(".java")) {
//输出
System.out.println(file);
}
}
}
public static void main(String[] args) {
//创建File文件,并指定文件路径
File f = new File("D:"+File.separator+"203sxt");
//创建Demo类类型,并调用search方法并传入实参
Demo d = new Demo();
d.search(f);
}
}
最后结果也不是空指针异常(NullPointerException)
你的Javasearch函数程序,当传入的文件是普通文件而非目录文件时,就会出现空指针异常.
解决办法也很简单,就是在进入函数时先判断一下是目录文件还是普通文件,是普通.java文件则打印出来,这样就没事了.完整的Java程序如下
import java.io.File;
public class D {
private static void search(File f) {
if(f.isDirectory()) {
File[] ff = f.listFiles();
for (File file : ff) {
if(file.isDirectory()) {
search(file);
} else if(file.isFile() && file.getName().endsWith(".java")) {
System.out.println(file);
}
}
}else if(f.isFile() && f.getName().endsWith(".java")){
System.out.println(f);
}
}
public static void main(String[] args) {
search(new File("D:\\tmp"));
}
}
运行结果
D:\tmp\AAAA.java
D:\tmp\AWTTest.java
D:\tmp\D.java
D:\tmp\Maze.java
D:\tmp\Test13.java