你可以
File#isDirectory()用来测试给定的文件(路径)是否为目录。如果是true,则只需再次调用同一个方法及其
File#listFiles()结果即可。这称为递归。
这是一个基本的启动示例。
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()); } }}
请注意,这
StackOverflowError对树的深度超过JVM堆栈可以容纳的深度很敏感。你可能要使用迭代方法或尾递归,但这是另一个主题;)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)