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 一个页面使用2次分页的实现方法
Jul 15 PHP
header导出Excel应用示例
Jan 24 PHP
php定时计划任务与fsockopen持续进程实例
May 23 PHP
php+Mysqli利用事务处理转账问题实例
Feb 11 PHP
PHP+Mysql基于事务处理实现转账功能的方法
Jul 08 PHP
如何使用GDB调试PHP程序
Dec 08 PHP
PHP批量去除BOM头内容信息代码
Mar 11 PHP
PHP串行化与反串行化实例分析
Dec 27 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
Feb 15 PHP
购物车实现的几种方式优缺点对比
May 02 PHP
ThinkPHP5 验证器的具体使用
May 31 PHP
PHP PDOStatement::nextRowset讲解
Feb 01 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内核(一)
2015/11/10 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
php中mkdir()函数的权限问题分析
2016/09/24 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
2018/03/12 PHP
jquery attr 设定src中含有&amp;(宏)符号问题的解决方法
2011/07/26 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
jquery复选框多选赋值给文本框的方法
2015/01/27 Javascript
javascript实用方法总结
2015/02/06 Javascript
jQuery获取页面元素绝对与相对位置的方法
2015/06/10 Javascript
Bootstrap每天必学之js插件
2015/11/30 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
python3实现飞机大战
2020/11/29 Python
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
2014年药品销售工作总结
2014/12/16 职场文书
2015年师德师风承诺书
2015/01/22 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
公司欠款证明
2015/06/24 职场文书
学生会主席任命书
2015/09/21 职场文书
创业计划书之酒店
2019/08/30 职场文书
Python中的min及返回最小值索引的操作
2021/05/10 Python