关于递归调用函数的一个问题
我这段代码目的是打印出一个文件夹下所有文件和文件夹的名字。如果文件夹下还有文件,则递归调用该函数,打印该子文件夹下的文件和文件夹的名字,直到最后只剩文件为止。
代码如下:
import java.io.File;
public class Test {
public Test() {
}
public void readFolderByFile(String filePath)
{
File file = new File(filePath);
File[] tempFile = file.listFiles();
for(int i = 0;i <tempFile.length;i++)
{
if(tempFile[i].isFile())
{
System.out.println( "File : "+tempFile[i].getName());
}
if(tempFile[i].isDirectory())
{
String subDirectory = tempFile[i].getName();
System.out.println( "Directory : "+subDirectory);
readFolderByFile(subDirectory); //递归调用在此
}
}
}
public static void main(String Args[])
{
Test test = new Test();
test.readFolderByFile( "E:\\shared ");
}
}
编译通过,运行,打印出直到第一个文件夹(包括第一个文件夹)的文件的名字后抛出
NullPointerException。如下:
--------------------Configuration: <Default> --------------------
File : 1.txt
File : 123.txt
Directory : subshared
Exception in thread "main "
java.lang.NullPointerException at Test.readFolderByFile(Test.java:18)
at Test.readFolderByFile(Test.java:28)
at Test.main(Test.java:36)
Process completed.
请问如何解决?
------解决方案-------------------- if (tempFile[i].isDirectory()) {
String subDirectory = tempFile[i].getName();
System.out.println( "Directory : " + subDirectory);
readFolderByFile(tempFile[i].getAbsolutePath()); // 递归调用在此
}
这样就可以了
根据绝对路径构造文件