php实例分享之通过递归实现删除目录下的所有文件详解


Posted in PHP onMay 15, 2014

先贴代码:

<?php
function delFile($dirName){ 
 if ($handle = opendir("$dirName")){
  while (($item = readdir($handle))!=false){
   if ($item!="." && $item!="..")  {
    if ( is_dir( "$dirName/$item" ) ) {  
             delFile( "$dirName/$item" );  
       } else unlink("$dirName/$item");
  }
 }
 closedir($handle);
}
?>

<?php
 delFile('/home/sources');
?>

先讲解几个函数:

opendir() :函数打开一个目录句柄,可由 closedir(),readdir() 和 rewinddir() 使用。

若成功,则该函数返回一个目录流,否则返回 false 以及一个 error。可以通过在函数名前加上 "@" 来隐藏 error 的输出。例如$dir=@ opendir("image");

readdir():返回由opendir函数打开的目录句柄中的条目,即顺序返回文件夹中的文件名,顺序按照文件系统中制定的排序方式。

id_dir():即检测参数文件是否为目录,如果是返回true.

un_link():即删除制定文件。

所以程序执行思路为:函数调用主目录,然后顺序检测每一文件是否为目录,如果为目录则递归调用函数,并对不为目录的文件进行删除,直到遍历完所有的文件。

这个程序只实现删除文件夹里面的内容,而没有删除文件夹本身,如果要实现这一目的,加上下面代码即可:

rmdir($dirName);
PHP 相关文章推荐
PHP与javascript对多项选择的处理
Oct 09 PHP
php下实现折线图效果的代码
Apr 28 PHP
php中获得视频时间总长度的另一种方法
Sep 15 PHP
php中批量修改文件后缀名的函数代码
Oct 23 PHP
php使用curl发送json格式数据实例
Dec 17 PHP
使用php转义输出HTML到JavaScript
Mar 27 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
Aug 23 PHP
微信支付PHP SDK ―― 公众号支付代码详解
Sep 13 PHP
php array_multisort 对数组进行排序详解及实例代码
Oct 27 PHP
2017年最新PHP经典面试题目汇总(上篇)
Mar 17 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
thinkPHP事务操作简单案例分析
Oct 17 PHP
php实例分享之二维数组排序
May 15 #PHP
php表单请求获得数据求和示例
May 15 #PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
May 15 #PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
May 15 #PHP
ThinkPHP使用心得分享-分页类Page的用法
May 15 #PHP
php自定义函数截取汉字长度
May 15 #PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
May 15 #PHP
You might like
PHP命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
php+mysql实现无限级分类
2015/11/11 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
jstl中判断list中是否包含某个值的简单方法
2016/10/14 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
ES6正则表达式扩展笔记
2017/07/25 Javascript
详解Nuxt.js Vue服务端渲染摸索
2018/02/08 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
详解VS Code使用之Vue工程配置format代码格式化
2019/03/20 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
关于layui的下拉搜索框异步加载数据的解决方法
2019/09/28 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
Python文件和目录操作详解
2015/02/08 Python
Django日志模块logging的配置详解
2017/02/14 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
Jar包的作用是什么
2014/03/30 面试题
恶意软件的定义
2014/11/12 面试题
应届生英语教师求职信
2013/11/05 职场文书
力学专业毕业生自荐信
2013/11/17 职场文书
工人先锋号事迹材料
2014/12/24 职场文书
行政介绍信范文
2015/05/04 职场文书
Django使用redis配置缓存的方法
2021/06/01 Redis
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis