(1) 通过递归扫描目录并打印

// php递归扫描目录
function scanMyDir($path){// 打开目录$dh = opendir($path);echo '<ul>';// 循环读取目录while(($file = readdir($dh)) !== false){// 先要过滤掉当前目录'.'和上一级目录'..'if($file == '.' || $file == '..') continue;// 为了能够显示中文目录/文件,需要进行转码echo '<li>'.iconv('gbk','utf-8',$file).'</li>';// 如果该文件仍然是一个目录,进入递归if(is_dir($path.'/'.$file)){scanMyDir($path.'/'.$file);}}echo '</ul>';
}
$path = 'e:/Music';
scanMyDir($path);

需要注意的地方:

①在读取目录的时候,会读取.和..,分别表示当前目录和上一级目录,需要过滤掉它们以进行后续的打印和操作。

②中文操作系统默认的编码是gbk,因此目录与文件的编码为gbk。想要在网页上显示的时候没有乱码,需要通过iconv函数进行转码。

③这一份代码是用无序列表来显示目录结构的。还有一种办法:可以添加一个递归深度$deep作为函数的参数,默认为0,每一次递归加1。这样不同的层级就拥有了不同的递归深度,通过str_repeat()函数来利用递归深度,就能让目录结构分出层次了。

(2) 通过递归删除目录及目录下的文件

// php递归删除目录和文件
function delAll($path){// 打开目录$dh = opendir($path);// 循环读取目录while(($file = readdir($dh)) !== false){// 过滤掉当前目录'.'和上一级目录'..'if($file == '.' || $file == '..') continue;// 如果该文件是一个目录,则进入递归if(is_dir($path.'/'.$file)){delAll($path.'/'.$file);} else {// 如果不是一个目录,则将其删除unlink($path.'/'.$file);}}// 退出循环后(此时已经删除所有了文件),关闭目录并删除closedir($dh);rmdir($path);
}
$path = './test';
delAll($path);

需要注意的一点是:只有当这个目录不是工作状态的时候,才能进行删除。所以必须要先通过closedir()关闭目录,并且确保在计算机中也退出了该目录,再进行删除的操作。

转载于:https://www.cnblogs.com/mozshaw/p/5372895.html

PHP-递归扫描目录和删除目录相关推荐

  1. php 递归删目录和文件,php递归删除目录与文件的方法

    php递归删除目录与文件的方法 本文实例讲述了php递归删除目录与文件的方法.分享给大家供大家参考.具体实现方法如下: function deldir($path){ $dh = opendir($p ...

  2. php递归操作目录 递归对参数转义

    header("Content-type:text/html;charset=utf-8"); //递归读取目录 function reddir($path,$level=0) { ...

  3. C#递归扫描文件夹中的文件

    为什么80%的码农都做不了架构师?>>>    本例是递归扫描文件夹中文件,并将文件夹的文件信息,全部显示到listview控件中,一下是源代码 /// <summary> ...

  4. java 递归扫描文件夹_java扫描文件夹下面的所有文件(递归与非递归实现)

    java中扫描指定文件夹下面的所有文件 扫描一个文件夹下面的所有文件,因为文件夹的层数没有限制可能多达几十层几百层,通常会采用两种方式来遍历指定文件夹下面的所有文件. 递归方式 非递归方式(采用队列或 ...

  5. 【工具类】遍历扫描目录下全部文件并列出

    package test20140715;import java.io.File;import org.junit.Test; /*** 遍历扫描目录下全部文件并列出* @author fushihu ...

  6. python扫描目录下文件_Python扫描目录读取文件,不考虑子目录

    这篇文章主要为大家详细介绍了Python扫描目录读取文件,不考虑子目录,具有一定的参考价值,可以用来参考一下. 感兴趣Python扫描目录读取文件,不考虑子目录的小伙伴,下面一起跟随512笔记的小编罗 ...

  7. 【Java基础】递归输出目录下所有文件路径

    递归输出目录下所有文件路径 import java.io.File;public class FileTest {public static void main(String[] args) {// ...

  8. go errgroup 递归搜索目录中的Go文件

    为了测试sync.ErrGroup的所有功能,我写了一个小程序,用一个指定的模式递归搜索目录中的Go文件.这有助于在Go源代码树中查找已使用已弃用或更新的包的实例.要测试sync.ErrGroup的所 ...

  9. java当中递归打印目录树

    一:上码 package cn.wyj.one;import java.io.File;public class Demo8_递归打印目录树 {public static void main(Stri ...

最新文章

  1. linux 下C调用Python 模块
  2. Playmaker全面实践教程之Playmaker常用工具
  3. CentOS7 安装chrome浏览器和ChromeDriver 及 python脚本调用chrome浏览器
  4. (转)青春有限,走红有年
  5. C#中实现视频播放器窗体程序(附源码下载)
  6. 我把上课的机器学习课件发给了国内300多位高校老师
  7. 对硬盘进行分区和格式化
  8. ssas对数据仓库_SSAS多维数据集中的警告
  9. 直播平台实现视频监控
  10. 学生选课管理系统(Java)
  11. 边做边记中航信酒店接口开发
  12. 2022年上半年软件设计师(软考)————考后总结
  13. xlwings 冻结窗口格 / 冻结首行/ FreezePanes
  14. 复合隐写/图片混合/图片格式头修改-西伯利亚大尾巴狼
  15. php的表达爱意的一句代码,表达爱意的诗句(精选50句)
  16. React 解决 “cross-cutting concerns” 问题
  17. TextView描边、渐变、阴影效果
  18. 四川泸州市高职计算机学校,四川泸州职高学校有哪些?
  19. 生产服务器变慢了排查思路
  20. 【电脑运用及修理】Internet Explorer 浏览器

热门文章

  1. ldconfig deferred processing now taking place
  2. 在linux上实现DllMain + 共享库创建方法
  3. ObjectContext.Refresh
  4. hdu 1087 Super Jumping! Jumping! Jumping!
  5. yml的mybatis的sql查看
  6. 使用了JDK自带的jconsole查看Tomcat运行情况
  7. 盘州市“检企联合” 探索大数据应用新路
  8. 智能家居物联网化将成为AWE大会最大看点
  9. 仿美团实现地域选择和城市列表
  10. python中的help()的用法