显示路径目录结构的递归方法(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。您可以定义它不适用吗?请阅读。