zoukankan      html  css  js  c++  java
  • 深度遍历:递归的应用

    /*
    *需求:对指定目录进行所有内容的列出(包含子目录中的内容)
    *也可以理解为深度遍历
    *分析:listFiles方法只会列出当前目录下的所有文件
    *但是如果需要访问当前目录下的文件下的文件,
    * 那还要对listFiles方法
    *进一步操作
    *
    */

    public class FileTest {
    public static void main(String[] args) {
        //1,建立当前文件
        File file = new File("demodir");
        //2,需要进行扩展,用函数封装起来
        enlistAll(file,0);
    }
    public static void listAll(File file) {
        /*
         * listFiles方法返回一个File对象数组,
         * 将当前目录下所有文件封装成file对象
         * 这样不仅仅局限于对文件名的操作。
         */
        /*
         * 3,分析过程,思考过程
         * 
         */
        /*File[] dir = file.listFiles();
          for(File name:dir){
            if(name.isDirectory()){//判断是否是目录
                //如果是目录,就继续遍历
                File[] dir2 = name.listFiles();
                for(File name2:dir2){
                if(name.isDirectory()){.....};
                 * 写到这发现端倪了,如果还是目录还要继续遍历
                 * 我们发现,我们再重复调用这个函数,
                 * 想到要用到递归!
                }
            }
            //无论是否是目录都要打印出文件名
            System.out.println(name);
        }*/
    }
    /*
     *重新建立这个函数,加个参数level 用来表示层级关系 
     */
    public static void enlistAll(File file,int level) {
        //每调用一次就打印一次这个文件 getspace方法是为了区别层级而设的
        System.out.println(getSpace(level)+file.getName());
        level++;
        File[] dir = file.listFiles();
        for(File name:dir){
            //判断是否是目录,是就重复进行,调用当前函数(递归)
            if(name.isDirectory()){
                enlistAll(name,level);
            }else{
                System.out.println(getSpace(level)+name.getName());
            }
    
        }
    
    }
    public static String getSpace(int level ) {
        StringBuilder sb = new StringBuilder();
        sb.append("|----");
        for(int i = 0;i<level;i++){
            sb.insert(0,"   ");
        }
        return sb.toString();
    }}
    

    打印效果

    这里写图片描述

    很多事情即将开始,很多人的命运即将改变
  • 相关阅读:
    WebRTC的一个例子
    Gerrit增加SSL证书
    Ruby on Rails 创建https应用
    使用Ruby来实现批量更新AD中字段
    pg gem 安装(postgresql94)
    Spark源码剖析(一):如何将spark源码导入到IDEA中
    Scala入门系列(十三):类型参数
    Scala入门系列(十二):隐式转换
    Scala 安装 Exception in thread "main" java.lang.VerifyError: Uninitialized object exists on backward branch 96
    Scala入门系列(十一):模式匹配
  • 原文地址:https://www.cnblogs.com/liuzk/p/12458981.html
Copyright © 2011-2022 走看看