请用递归和迭代两种方式输出文件目录结构

    xiaoxiao2021-12-03  37

    示例:输出一个目录的文件结构如下图所示:

    控制台输出如下: 递归 新建文件夹    a.txt    新建文件夹       b.txt 迭代 新建文件夹    a.txt    新建文件夹       b.txt 代码如下: import java.io.File; import java.util.Stack; /** * Created by liyiwen1 on 2016/11/17. */ public class a { public static void main(String[] args) { System. out.println( "递归"); printDir( new File( "C: \\ Users \\ liyiwen1 \\ Desktop \\ 新建文件夹"), ""); System. out.println( "迭代"); iterationPrintDir( new File( "C: \\ Users \\ liyiwen1 \\ Desktop \\ 新建文件夹"), ""); } //递归实现 public static void printDir(File file){ printDir(file, ""); } //迭代实现 public static void iterationPrintDir(File file){ iterationPrintDir(file, ""); } static class DataUnit{ private File file; private String soujin; public DataUnit(File file, String soujin) { this. file = file; this. soujin = soujin; } public File getFile() { return file; } public void setFile(File file) { this. file = file; } public String getSoujin() { return soujin; } public void setSoujin(String soujin) { this. soujin = soujin; } } public static void iterationPrintDir(File file, String soujin){ //soujin表示缩进 Stack<DataUnit> stack = new Stack(); stack.push( new DataUnit(file, soujin)); while (!stack.isEmpty()){ file = stack.peek().getFile(); soujin = stack.peek().getSoujin(); stack.pop(); if (!file.exists()){ return; } if (file.isFile()){ System. out.println(soujin + file.getName()); } else if (file.isDirectory()){ System. out.println(soujin + file.getName()); String[] files = file.list(); if (files != null && files. length != 0){ for (String fileName : files){ File ziFile = new File(file, fileName); if (ziFile.exists() && ziFile.isFile()){ System. out.println(soujin + " " + fileName); } else if (ziFile.exists() && ziFile.isDirectory()){ stack.push( new DataUnit(ziFile, " " + soujin)); } } } } } } public static void printDir(File file, String soujin){ //soujin表示缩进 if (!file.exists()){ return; } if (file.isFile()){ System. out.println(soujin + file.getName()); } else if (file.isDirectory()){ System. out.println(soujin + file.getName()); String[] files = file.list(); if (files != null && files. length != 0){ for (String fileName : files){ File ziFile = new File(file, fileName); if (ziFile.exists() && ziFile.isFile()){ System. out.println(soujin + " " + fileName); } else if (ziFile.exists() && ziFile.isDirectory()){ printDir(ziFile, " " + soujin); } } } } } }

    转载请注明原文地址: https://ju.6miu.com/read-679923.html

    最新回复(0)