我的代码中存在各种异常问题。该类旨在查找计算机上的所有文件夹/子文件夹,并将它们列为ArrayList。它并不关心它们中的文件。这是代码。请帮助,我已经对此感到沮丧一个星期了。
import java.io.File;
import java.util.ArrayList;
public class Detector
{
private ArrayList<String> paths;
public Detector()
{
File[] roots = File.listRoots();
for(File drive : roots)
{
getPaths(drive.listFiles());
}
}
public Detector(String str)
{
File[] bob = new File(str).listFiles();
getPaths(bob);
}
public void getPaths(File[] files)
{
for (File file : files)
{
if(file.isDirectory())
{
paths.add(file.getName());
getPaths(file.listFiles());
}
}
}
public ArrayList<String> getPathList()
{
return paths;
}
public void printPaths()
{
for(String str: this.getPathList())
{
System.out.println(str);
}
}
public static void main(String[] args)
{
Detector tom = new Detector("/F:");
tom.printPaths();
}
}
答案 0 :(得分:2)
您从未初始化paths
:
private ArrayList<String> paths = new ArrayList<String>();
请注意,我在这里也使用了String
的类型参数。一般情况下,请尽量避免使用raw types。
答案 1 :(得分:1)
此行的语法不正确
private ArrayList<String> paths;
您没有正确初始化arraylist。为了正确初始化你必须做
private ArrayList<String> paths = new ArrayList<>();
注意:我没有将String
置于<>
内作为java 1.7中的冗余。
答案 2 :(得分:0)
补充说明:
File.listFiles()
可能会返回null
,这可能是您的NullPointerException。所以:
public void getPaths(File[] files)
{
if (files == null) {
return;
}
Java 7有一个Files.walkFileTree,它带有几个新类,但值得习惯。