本帖最后由 小鲁哥哥 于 2020-1-8 19:31 编辑
【黑马程序员济南】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);
}
运行的结果:
递归点:在何时发生的递归。 如果读取到的为目录! 递归出口:何时,递归不在继续了,返回了。 目录下所有的内容都读取完毕!函数结束调用,返回!
目录树状结构展示方式,有两种典型的。 其一:树状展示
并列的关系。每行都是独立的。利用文件的顺序和缩进表示上下级关系。
核心就是,计算缩进级别。 缩进的级别,与递归调用的深度保持一致!
实现如下: [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);
}
展示效果:
记录深度和文件信息,而不是直接输出 到这里,我们的代码就结束了。不知道大家对今天的讲的文件的操作的案例理解的怎么样啊? 如果你想了解更多黑马课程请点击这里,如果你想加入黑马这个大家庭学习先进技术,广交天下好友! 黑马程序员济南中心联系电话:0531-55696830
|