我这段代码目的是打印出一个文件夹下所有文件和文件夹的名字。如果文件夹下还有文件,则递归调用该函数,打印该子文件夹下的文件和文件夹的名字,直到最后只剩文件为止。
代码如下: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.请问如何解决?
代码如下: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.请问如何解决?
String subDirectory = tempFile[i].getName();
System.out.println("Directory : " + subDirectory);
readFolderByFile(tempFile[i].getAbsolutePath()); // 递归调用在此
}这样就可以了根据绝对路径构造文件