传智播客旗下技术交流社区北京校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小鲁哥哥 于 2017-12-18 10:08 编辑

【黑马程序员济南】PHP模块讲解之文件操作案例

递归获取目录内容
       获得某个目录,及其后代目录的全部内容。
       思路:读取目录下内容,如果发现读取的为目录,递归调用该函数,读取子目录内容,依次递归!

[PHP] 纯文本查看 复制代码
/*
 * 黑马程序员 济南中心出品
 */

$path = 'e:/text';
readDirR($path);

function readDirR($path){
        $handle = opendir($path);
        //防止出现文件名为0的问题,因此严格判断是否为false
        while(false !== $basename = readdir($handle)){
                //过滤掉  .  ..这两个文件
                if($basename == '.' || $basename == '..') continue;
                
                echo $basename,'<br />';
                
                //判断当前
                if(is_dir($path.'/'.$basename)){
                        readDirR($path.'/'.$basename);
                }
        }
        
        closedir($handle);
}

运行的结果:
递归结果.png

递归点:在何时发生的递归。
         如果读取到的为目录!
递归出口:何时,递归不在继续了,返回了。
         目录下所有的内容都读取完毕!函数结束调用,返回!

目录树状结构展示方式,有两种典型的。
其一:树状展示
       并列的关系。每行都是独立的。利用文件的顺序和缩进表示上下级关系。
          目录列表.png

核心就是,计算缩进级别
       缩进的级别,与递归调用的深度保持一致!

实现如下:
[PHP] 纯文本查看 复制代码
/*
 * 黑马程序员 济南中心出品
 */

$path = 'e:/shop43';
readDirR_tree($path);

function readDirR_tree($path,$deep=0){
        $handle = opendir($path);
        //防止出现文件名为0的问题,因此严格判断是否为false
        while(false !== $basename = readdir($handle)){
                //过滤掉  .  ..这两个文件
                if($basename == '.' || $basename == '..') continue;
                //将深度转换成空格  并输出出来
                echo str_repeat(' ',$deep*4),$basename,'<br />';
                
                //判断当前读取到的是否为目录
                if(is_dir($path.'/'.$basename)){
                        //若是个目录,递归调用
                        readDirR_tree($path.'/'.$basename,$deep+1);
                }
        }
        
        closedir($handle);
}




展示效果:

程序出现的目录.png
记录深度和文件信息,而不是直接输出
到这里,我们的代码就结束了。
不知道大家对今天的讲的文件的操作的案例理解的怎么样啊?
如果你想了解更多黑马课程请点击这里,如果你想加入黑马这个大家庭学习先进技术,广交天下好友!
黑马程序员济南中心联系电话:0531-55696830

分享至 : QQ空间
收藏

6 个回复

倒序浏览
不错的东西
回复 使用道具 举报
前来看一看。。。。。。
回复 使用道具 举报
哇大啊啊啊啊啊啊
回复 使用道具 举报
wadadadsadsadasdasdas
回复 使用道具 举报
wadsdsa asdassadasdasdassa
回复 使用道具 举报
wefsdfsdfsdfsdfdsf
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马
关闭

站长推荐 上一条 /4 下一条