php rmdir使用递归函数删除非空目录实例详解


Posted in PHP onOctober 20, 2016

 首先向大家介绍一下rmdir()函数。

php rmdir()函数

rmdir — 删除空目录

语法:

bool rmdir ( string $dirname [, resource $context ] )

尝试删除 dirname 所指定的目录。 该目录必须是空的,而且要有相应的权限。 失败时会产生一个E_WARNING级别的错误。
参数:

1.dirname:目录的路径。
2.context:在 PHP 5.0.0 中增加了对上下文(Context)的支持。

php rmdir()删除非空目录

上面已经说过,rmdir()函数只能删除空目录,如果是非空目录就需要先进入到目录中,使用unlink()函数将目录中的每个文件都删除掉,再回来将这个空目录删除。如果目录中还存在子目录,而且目录也非空,就需要使用递归的方法。自定义递归函数删除目录的源代码如下:

<?php
function delDir($directory){//自定义函数递归的函数整个目录
  if(file_exists($directory)){//判断目录是否存在,如果不存在rmdir()函数会出错
    if($dir_handle=@opendir($directory)){//打开目录返回目录资源,并判断是否成功
      while($filename=readdir($dir_handle)){//遍历目录,读出目录中的文件或文件夹
        if($filename!='.' && $filename!='..'){//一定要排除两个特殊的目录
          $subFile=$directory."/".$filename;//将目录下的文件与当前目录相连
          if(is_dir($subFile)){//如果是目录条件则成了
            delDir($subFile);//递归调用自己删除子目录
          }
          if(is_file($subFile)){//如果是文件条件则成立
            unlink($subFile);//直接删除这个文件
          }
        }
      }
      closedir($dir_handle);//关闭目录资源
      rmdir($directory);//删除空目录
    }
  }
}

delDir("mydir");//调用delDir函数

?>

处理递归删除非空目录外,我们也可以使用操作系统命令“rm -rf”删除非空的目录,但也要从安全和跨平台方面考虑尽量不要去使用。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
ThinkPHP中URL路径访问与模块控制器之间的关系
Aug 23 PHP
PHP类的反射用法实例
Nov 03 PHP
php抽象类用法实例分析
Jul 07 PHP
php冒泡排序与快速排序实例详解
Dec 07 PHP
php实现图片缩略图的方法
Mar 29 PHP
浅谈php处理后端&amp;接口访问超时的解决方法
Oct 29 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 PHP
PHP与以太坊交互详解
Aug 24 PHP
PHP xpath()函数讲解
Feb 11 PHP
PHP+redis实现微博的拉模型案例详解
Jul 10 PHP
解决php扩展安装不生效问题
Oct 25 PHP
PHP7 标准库修改
Mar 09 PHP
PHPCMS V9 添加二级导航的思路详解
Oct 20 #PHP
php实现登陆模块功能示例
Oct 20 #PHP
php实现文章置顶功能的方法
Oct 20 #PHP
PHP上传图片时判断上传文件是否为可用图片的方法
Oct 20 #PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
Oct 19 #PHP
php禁用cookie后session设置方法分析
Oct 19 #PHP
php无限级分类实现方法分析
Oct 19 #PHP
You might like
谷歌音乐搜索栏的提示功能php修正代码
2011/05/09 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
jCallout 轻松实现气泡提示功能
2013/09/22 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
2013/10/25 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
JS中Location使用详解
2015/05/12 Javascript
vue页面离开后执行函数的实例
2018/03/13 Javascript
layui获取选中行数据的实例讲解
2018/08/19 Javascript
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
使用python统计文件行数示例分享
2014/02/21 Python
python实现解数独程序代码
2017/04/12 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
对Python3 解析html的几种操作方式小结
2019/02/16 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
python mysql断开重连的实现方法
2019/07/26 Python
PHP统计代码行数的小代码
2019/09/19 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
Dogeared官网:在美国手工制作的珠宝
2019/08/24 全球购物
小学校园活动策划
2014/01/30 职场文书
2014预备党员批评与自我批评思想汇报
2014/09/20 职场文书
合作协议书范本
2014/10/25 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python
详解Python描述符的工作原理
2021/06/11 Python