【发布时间】:2011-03-14 21:24:37
【问题描述】:
嗨 我这里有一个小程序,它从命令行获取一个目录并添加该目录及其子文件夹中的所有文件..所以这里是代码:
package oop.ex1.filescript;
import java.io.*;
import java.util.ArrayList;
public class MyFileScript {
public static void main(String[] args) {
File dir = new File(args[0]);
//LINE 13
ArrayList<File> files = readAllFiles(dir.listFiles());
}
private static ArrayList<File> readAllFiles(File[] dir){
ArrayList<File> result = new ArrayList<File>();
//LINE 28
for(File itr : dir) {
result.add(itr);
if (!itr.isFile()) {
File[] temp = itr.listFiles();
//LINE 32
ArrayList<File> deeperList = readAllFiles(temp);
result.addAll(deeperList);
}
}
return result;
}
}
现在,当我在某些文件不多的文件夹上运行它时,一切都很好,但是当我给它提供包含很多文件的文件夹时,我得到了:
Exception in thread "main" java.lang.NullPointerException
at oop.ex1.filescript.MyFileScript.readAllFiles(MyFileScript.java:28)
at oop.ex1.filescript.MyFileScript.readAllFiles(MyFileScript.java:32)
at oop.ex1.filescript.MyFileScript.readAllFiles(MyFileScript.java:32)
at oop.ex1.filescript.MyFileScript.main(MyFileScript.java:13)
知道为什么会这样吗?谢谢! p.s.我标记了行号!
【问题讨论】: