我用一个简单的循环来解决这个烦恼的问题。这是我的程序的架构
public static void methodA(File a, File b){
//procedure
}
Public static void readFiles(String a){
File folder = new File(a);
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.lenght-1; i++)
{
if (listOfFiles[i].isDirectory())
{
readFile(listOfFiles[i].getPath());
}
else
{
methodA(listOfFiles[i],listOfFiles[i+1])
}
}
}
public static void main(String[] args) throws InterruptedException {
String path = new String("Path to global folder");
readFile(path);
}
问题是,当我从第2版到第3版进入第一个文件夹时,我遇到此消息错误(仅文件数 - 等于5):
线程“main”中的异常java.lang.NullPointerException
但是,如果我做这样的事情: for(int i = 3; i&lt; listOfFiles.lenght-1; i ++)该程序没有任何问题,同样的情况发生在一些其他文件夹中的文件。
在每个文件夹中至少有3个文件(仅文件)。
可能发生什么?,我也尝试过调试以试图理解问题,但没有任何成功。
答案 0 :(得分:1)
listFiles仅对文件夹有效。如果您在文件而不是文件夹上使用listFiles,它将返回null
。
然后,listOfFiles.lenght
抛出一个NPE。
翻转您的If-Cases。