• 技术文章 >后端开发 >php教程

    递归遍历目录 深度问题

    2016-06-06 20:50:26原创624
    目录结构 例如
    a
    a-1/a-11/a-111
    b-1/b-11/b-111/b-1111
    
    c
    c-1/c-11/c-111
    d-1/d-11/d-111/d-111
    
    已知一个目录列表 如上的 a c 遍历子目录  按深度2来遍历
    
    结果就是
    a
    a-1/a-11/
    b-1/b-11/
    
    c
    c-1/c-11/
    d-1/d-11/
    求代码 PHP JAVA 都行
    

    回复内容:

    目录结构 例如
    a
    a-1/a-11/a-111
    b-1/b-11/b-111/b-1111
    
    c
    c-1/c-11/c-111
    d-1/d-11/d-111/d-111
    
    已知一个目录列表 如上的 a c 遍历子目录  按深度2来遍历
    
    结果就是
    a
    a-1/a-11/
    b-1/b-11/
    
    c
    c-1/c-11/
    d-1/d-11/
    求代码 PHP JAVA 都行
    

    本来这种问题,只需要你稍微google一下就有现成的答案滴,直接贴答案并不是一种好的交流学习方式。

    故此,还是贴一些Java7新的文件API写的代码吧,至于java7之前的文件API写的代码,google即可得之。

    Path start = FileSystems.getDefault().getPath("D:/cglib");
    
        Files.walkFileTree(start, EnumSet.allOf(FileVisitOption.class), 3,
                new FileVisitor() {
                    @Override
                    public FileVisitResult preVisitDirectory(Path dir,
                            BasicFileAttributes attrs) throws IOException {
                        System.out.println(dir);
                        return FileVisitResult.CONTINUE;
                    }
    
                    @Override
                    public FileVisitResult visitFile(Path file,
                            BasicFileAttributes attrs) throws IOException {
                        return FileVisitResult.CONTINUE;
                    }
    
                    @Override
                    public FileVisitResult visitFileFailed(Path file,
                            IOException exc) throws IOException { 
                        return FileVisitResult.CONTINUE;
                    }
    
                    @Override
                    public FileVisitResult postVisitDirectory(Path dir,
                            IOException exc) throws IOException {
                        return FileVisitResult.CONTINUE;
                    }
        });
    

    这个貌似不难吧,我用javascript写给你吧,都差不多的。

    var deps=3
    var basenames=["a","b","c"]
    for ( var i =0;i

    递归的时候加上层级参数即可,每次递归参数都需要+1来确认当前层级,然后在下次递归开始的时候判断当前层级是否已经到达限制层级,如果到达则不再往下层递归

    php入门到就业线上直播课:查看学习

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:php java
    上一篇:编写PHP扩展遇到的 Z_OBJ_P warning问题 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 基于PHP的简单采集数据入库程序_PHP• PHP中读取文件的8种方法和代码实例_PHP• PHP实现的连贯操作、链式操作实例_PHP• PHP5中Cookie与 Session使用详解_PHP• 关于PHP中Object对象的笔记分享_PHP
    1/1

    PHP中文网