public class SearchAndCopy {
public static void main(String[] args) {
// 封装目录
File file = new File("D:\\");//如果我封装时,封装一个具体的文件,不判断也不会报空指针异常
search(file);
}
public static void search(File file) {
File[] files = file.listFiles();
if (files != null) {//如果这里不判断,就会报空指针异常,为什么?
for (File f : files) {
if (f.isFile() && f.getName().endsWith(".java")) {
System.out.println(f);
} else {
search(f);
}
}
}
}
总结上面的问题,问题就是如果读取文件时,只封装盘符,那么当调用listFiles()方法获取的文件就必须要判断一下,不判断就报空指针异常,如果封装了具体的文件,获取到的文件不用判断也不会报错,为什么?作者: 黄锦成 时间: 2013-1-13 18:44
这是因为你if的判断条件有问题,如果一个图片文件,isFile为true,但是不是以java为格式,那么就会进入else,此时,把图片当成了目录,就错了。你应该把endsWith放进if里面判断作者: 张权 时间: 2013-1-13 19:03