您可以使用
File#isDirectory()来测试给定文件(路径)是否是目录。如果这是真的,那么你只需要调用相同的方法与它的
File#listFiles()结果。这称为
recursion。
这里有一个基本的开球示例。
public static void main(String... args) {
File[] files = new File("C:/").listFiles();
showFiles(files);
}
public static void showFiles(File[] files) {
for (File file : files) {
if (file.isDirectory()) {
System.out.println("Directory: " + file.getName());
showFiles(file.listFiles()); // Calls same method again.
} else {
System.out.println("File: " + file.getName());
}
}
}
注意,当树比JVM的堆栈更深时,这对StackOverflowError敏感。你可能想使用迭代法或tail-recursion,但这是另一个主题;)