线程&#34; main&#34;中的例外情况java.io.File上的java.lang.StackOverflowError。<init>(未知来源)

时间:2016-08-11 05:08:02

标签: java directory

我有以下代码。我找不到问题的根源。

public class ConsoleApp1 {
    public static void main(String[] args) {
        allFiles("C:\\");
    }

    private static void allFiles(String root) {

        File ro = new File("e:\\");
        File[] flist = ro.listFiles();

        for (File i: flist) {
            if (i.isFile()) {
                System.out.println(i.getAbsolutePath());
            } else {
                allFiles(i.getAbsolutePath());
            }
        }
    }
}

我将来要将此添加到swing应用程序中,来自按钮的调用将获取列表并将其填充到JTree任何建议中也会有所帮助。

1 个答案:

答案 0 :(得分:4)

您在E:\上递归调用File构造函数。由于无限循环,您最终会收到stackoverflow错误。将构造函数参数更改为使用root变量。

private static void allFiles(String root) {
    File ro = new File(root);
    File[] flist = ro.listFiles();

    for(File i : flist){
        if(i.isFile()) {
            System.out.println(i.getAbsolutePath());
        }
        else {
            allFiles(i.getAbsolutePath());
        }
    }
}