PHP-递归扫描目录和删除目录
(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-递归扫描目录和删除目录相关推荐
- php 递归删目录和文件,php递归删除目录与文件的方法
php递归删除目录与文件的方法 本文实例讲述了php递归删除目录与文件的方法.分享给大家供大家参考.具体实现方法如下: function deldir($path){ $dh = opendir($p ...
- php递归操作目录 递归对参数转义
header("Content-type:text/html;charset=utf-8"); //递归读取目录 function reddir($path,$level=0) { ...
- C#递归扫描文件夹中的文件
为什么80%的码农都做不了架构师?>>> 本例是递归扫描文件夹中文件,并将文件夹的文件信息,全部显示到listview控件中,一下是源代码 /// <summary> ...
- java 递归扫描文件夹_java扫描文件夹下面的所有文件(递归与非递归实现)
java中扫描指定文件夹下面的所有文件 扫描一个文件夹下面的所有文件,因为文件夹的层数没有限制可能多达几十层几百层,通常会采用两种方式来遍历指定文件夹下面的所有文件. 递归方式 非递归方式(采用队列或 ...
- 【工具类】遍历扫描目录下全部文件并列出
package test20140715;import java.io.File;import org.junit.Test; /*** 遍历扫描目录下全部文件并列出* @author fushihu ...
- python扫描目录下文件_Python扫描目录读取文件,不考虑子目录
这篇文章主要为大家详细介绍了Python扫描目录读取文件,不考虑子目录,具有一定的参考价值,可以用来参考一下. 感兴趣Python扫描目录读取文件,不考虑子目录的小伙伴,下面一起跟随512笔记的小编罗 ...
- 【Java基础】递归输出目录下所有文件路径
递归输出目录下所有文件路径 import java.io.File;public class FileTest {public static void main(String[] args) {// ...
- go errgroup 递归搜索目录中的Go文件
为了测试sync.ErrGroup的所有功能,我写了一个小程序,用一个指定的模式递归搜索目录中的Go文件.这有助于在Go源代码树中查找已使用已弃用或更新的包的实例.要测试sync.ErrGroup的所 ...
- java当中递归打印目录树
一:上码 package cn.wyj.one;import java.io.File;public class Demo8_递归打印目录树 {public static void main(Stri ...
最新文章
- linux 下C调用Python 模块
- Playmaker全面实践教程之Playmaker常用工具
- CentOS7 安装chrome浏览器和ChromeDriver 及 python脚本调用chrome浏览器
- (转)青春有限,走红有年
- C#中实现视频播放器窗体程序(附源码下载)
- 我把上课的机器学习课件发给了国内300多位高校老师
- 对硬盘进行分区和格式化
- ssas对数据仓库_SSAS多维数据集中的警告
- 直播平台实现视频监控
- 学生选课管理系统(Java)
- 边做边记中航信酒店接口开发
- 2022年上半年软件设计师(软考)————考后总结
- xlwings 冻结窗口格 / 冻结首行/ FreezePanes
- 复合隐写/图片混合/图片格式头修改-西伯利亚大尾巴狼
- php的表达爱意的一句代码,表达爱意的诗句(精选50句)
- React 解决 “cross-cutting concerns” 问题
- TextView描边、渐变、阴影效果
- 四川泸州市高职计算机学校,四川泸州职高学校有哪些?
- 生产服务器变慢了排查思路
- 【电脑运用及修理】Internet Explorer 浏览器
热门文章
- ldconfig deferred processing now taking place
- 在linux上实现DllMain + 共享库创建方法
- ObjectContext.Refresh
- hdu 1087 Super Jumping! Jumping! Jumping!
- yml的mybatis的sql查看
- 使用了JDK自带的jconsole查看Tomcat运行情况
- 盘州市“检企联合” 探索大数据应用新路
- 智能家居物联网化将成为AWE大会最大看点
- 仿美团实现地域选择和城市列表
- python中的help()的用法