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 相关文章推荐
php正则校验用户名介绍
Jul 19 PHP
谈谈关于php的优点与缺点
Apr 11 PHP
深入掌握include_once与require_once的区别
Jun 17 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
php实现的Captcha验证码类实例
Sep 22 PHP
ThinkPHP框架设计及扩展详解
Nov 25 PHP
WordPress分页伪静态加html后缀
Jun 08 PHP
php设计模式之单例模式代码
Jun 11 PHP
PHP第三方登录―QQ登录实现方法
Feb 06 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
May 30 PHP
PHP crc32()函数讲解
Feb 14 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多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
php调用nginx的mod_zip模块打包ZIP文件
2014/06/11 PHP
php操作access数据库的方法详解
2017/02/22 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
php5与php7的区别点总结
2019/10/11 PHP
Prototype使用指南之ajax
2007/01/10 Javascript
ExtJS Store的数据访问与更新问题
2010/04/28 Javascript
javascript 面向对象 function类
2010/05/13 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
从零学习node.js之搭建http服务器(二)
2017/02/21 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
layer.confirm点击第一个按钮关闭弹出框的方法
2019/09/09 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
在Django的视图中使用数据库查询的方法
2015/07/16 Python
pandas 按照特定顺序输出的实现代码
2018/07/10 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
2018/12/20 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
最新销售员个人自荐信
2013/09/21 职场文书
网络工程专业毕业生推荐信
2013/10/28 职场文书
销售辞职报告范文
2014/01/12 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
批评与自我批评总结
2014/10/17 职场文书
清洁工个人工作总结
2015/03/05 职场文书
火烧圆明园观后感
2015/06/03 职场文书
Python数据类型最全知识总结
2021/05/31 Python
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技