Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
显示路径目录结构的递归方法(Java)_Java_Recursion - Fatal编程技术网

显示路径目录结构的递归方法(Java)

显示路径目录结构的递归方法(Java),java,recursion,Java,Recursion,老师给我们的问题是写一个递归方法来显示路径的目录结构 他希望输出如下所示: testdir +--f1 +--d2 +--d22 +f221 +f212 +f211 +--f2 +--d1 +--f12 我用了这个方法: packa

老师给我们的问题是写一个递归方法来显示路径的目录结构

他希望输出如下所示:

           testdir
           +--f1
           +--d2
              +--d22
                 +f221
               +f212
               +f211
            +--f2
            +--d1
               +--f12
我用了这个方法:

package Task;

import java.io.File;
import java.io.IOException;

public class Recursive {

public static void main(String[] args) {
        File currentDirectory = new File(" . "); // current directory
        displayDirectoryContents(currentDirectory);
    }

    public static void displayDirectoryContents(File dirct) {           
        File[] myfiles = dirct.listFiles();                 
                for (File file : myfiles) {                     
                    if (file.isDirectory()) {                           
                    //it worked when i used file.getCanonicalPath()); but file.getName()); does not work
                        System.out.println("directory : " + file.getName());                            
                        displayDirectoryContents(file);                         
                    } 
                else {
                    //it worked when i used file.getCanonicalPath()); but file.getName()); does not work
                        System.out.println(" files : " + file.getName());
                    }
                }
    }

}
getName不起作用,请给我一个erorr

线程主java.lang.NullPointerException中出现异常 在lab16.displayDirectoryContentslab16.java:17 在lab16.mainlab.java:10

我重写了算法,它与.getName一起工作没有任何问题。我没有做任何缩进

import java.io.File;

public class Recursive {
    private static void TraverseDirectory(File[] files) {
        if (files.length == 0) return;

        for (File file : files) {
            if (file.isFile()) System.out.println(file.getName());
            else {
                // is DIR
                System.out.println(file.getName());
                TraverseDirectory(file.listFiles());
            }
        }

    }

    public static void main(String[] args) {
        File cur_dir = new File("/");
        TraverseDirectory(cur_dir.listFiles());
    }
}

编辑:编辑完你的问题后,我现在可以看到问题出在哪里了。当目录内容为空时,您没有返回任何内容,它为空。因此,它无法遍历空值。

OK。这里有一个问题吗?它不适用于GetName。您可以定义它不适用吗?请阅读。