• 深度遍历:递归的应用


    /*
    *需求:对指定目录进行所有内容的列出(包含子目录中的内容)
    *也可以理解为深度遍历
    *分析: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();
    }}
    

    打印效果

    这里写图片描述

    很多事情即将开始,很多人的命运即将改变
  • 相关阅读:
    常用品牌交换机镜像抓包配置
    BGP知识点备忘录
    IS-IS路由协议地址详解
    Linux msmtp+mutt发邮件
    Linux添加一临时用户拥有root权限最快方式
    ELK5.0全程普通用户源码安装指南(CentOS6.5)
    改变文件的拥有者和改变文件的拥有组
    Linux chmod命令详解
    Linux目录介绍
    php时间戳转化成时间相差8小时问题
  • 原文地址:https://www.cnblogs.com/liuzk/p/12458981.html
Copyright © 2020-2023  润新知