zoukankan      html  css  js  c++  java
  • 递归输出 树状 目录

     1 import java.io.File;
     2 import java.util.ArrayList;
     3 import java.util.List;
     4 
     5 public class IteratorDirDemo {
     6 
     7     public static void main(String[] args) {
     8         IteratorUtil.IteratorDir(new File("f:\KuGou"));
     9     }
    10 
    11 }
    12 
    13 class IteratorUtil {
    14     private static int level = 0;// 保存层级数
    15 
    16     public static void IteratorDir(File file) {
    17         if (file != null) {
    18             // 找出递归的出口
    19             if (file.isFile() || file.list().length == 0) {
    20                 return;
    21             } else {
    22 
    23                 File[] files = file.listFiles();
    24                 //线文件夹后文件排序
    25                 files = sort(files);
    26                 for (File f : files) {
    27                     // 动态字符串
    28                     StringBuilder sb = new StringBuilder();
    29                     if (f.isFile()) {
    30                         sb.append(getTab(level));
    31                         sb.append(f.getName());
    32                     } else {
    33                         sb.append(getTab(level));
    34                         sb.append(f.getName());
    35                         sb.append("\");
    36                     }
    37                     System.out.println(sb.toString());
    38                     if (f.isDirectory()) {
    39                         level++;// 进入目录遍历层级加一
    40                         IteratorDir(f);// 递归调用遍历
    41                         level--;// 退出目录 level减一
    42                     }
    43 
    44                 }
    45             }
    46 
    47         }
    48     }
    49 
    50     /**
    51      * 对file类型数组进行先文件夹后文件排序
    52      * 
    53      * @param files
    54      * @return
    55      */
    56     private static File[] sort(File[] files) {
    57         List<File> list = new ArrayList<File>();
    58         // 先存放文件夹后存放文件
    59         for (File f :files) {
    60             if (f.isDirectory()) {
    61                 list.add(f);
    62             }
    63         }
    64         for (File f : files) {
    65             if (f.isFile()) {
    66                 list.add(f);
    67             }
    68         }
    69         return list.toArray(new File[list.size()]);
    70 
    71     }
    72 
    73     // 根据层级数得到	所组成的字符串
    74     private static String getTab(int level) {
    75         StringBuilder sb = new StringBuilder();
    76         for (int i = 0; i < level; i++) {
    77             sb.append("	");
    78         }
    79         return sb.toString();
    80     }
    81 }
  • 相关阅读:
    leetcode-Single Number
    设计模式六大原则(4)——接口隔离原则
    设计模式六大原则(3)——依赖倒置原则
    设计模式六大原则(2)——里氏替换原则
    设计模式六大原则(1)——单一职责原则
    观察者模式
    转:画图工具
    android 博客列表
    app crash率的标准
    查看某一个开发者代码修改量的脚本(ios平台可用)
  • 原文地址:https://www.cnblogs.com/the-wang/p/7124015.html
Copyright © 2011-2022 走看看