我的递归出了什么问题

时间:2017-09-20 10:04:58

标签: java recursion

我想实现一个方法来查找文件夹及其子文件夹中的所有文件,等等...... 我通过递归实现了它,但我不知道出了什么问题。 有人能帮助我吗?

private void fileLister(){
    File d = new File(adress);
    File[] existingFiles =d.listFiles();
    for(int i = 0;i<existingFiles.length;i++){

        if(existingFiles[i].isDirectory()){

            fileLister();

        }
        else{

            List<File> templist = Arrays.asList(existingFiles);
                allExsistingFiles.addAll(templist);
        }
    }
}

2 个答案:

答案 0 :(得分:2)

您需要每次调用递归方法才能拥有该调用中正在使用的目录。最小的改变应该是:

    private void fileLister(File directory){
    File[] existingFiles =directory.listFiles();
    for(int i = 0;i<existingFiles.length;i++){

        if(existingFiles[i].isDirectory()){

            fileLister(existinFiles[i]);

        }
        else{

            List<File> templist = Arrays.asList(existingFiles);
                allExsistingFiles.addAll(templist);
        }
    }
}

答案 1 :(得分:-1)

检查IT:

public void showAll(String directoryName, ArrayList<File> files) {
    File dir = new File(directoryName);

    File[] fL = dir.listFiles();
    for (File file : fL) {
        if (file.isFile()) {
            files.add(file);
        } else if (file.isDirectory()) {
            listf(file.getAbsolutePath(), files);
        }
    }
}