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学习 计数器实例代码
Jun 15 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
Jun 18 PHP
FireFox浏览器使用Javascript上传大文件
Oct 30 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
Jul 22 PHP
php创建session的方法实例详解
Jan 27 PHP
PHP答题类应用接口实例
Feb 09 PHP
PHP实现的获取文件mimes类型工具类示例
Apr 08 PHP
Ajax+PHP实现的模拟进度条功能示例
Feb 11 PHP
PHP观察者模式实例分析【对比JS观察者模式】
May 22 PHP
PHP+iframe模拟Ajax上传文件功能示例
Jul 02 PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 PHP
laravel框架模型和数据库基础操作实例详解
Jan 25 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
php json_encode奇怪问题说明
2011/09/27 PHP
解析PHP实现多进程并行执行脚本
2013/06/18 PHP
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
php分页示例分享
2014/04/30 PHP
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
2016/07/07 PHP
Javascript常用运算符(Operators)-javascript基础教程
2007/12/14 Javascript
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
javascript实现面向对象类的功能书写技巧
2010/03/07 Javascript
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
javascript之querySelector和querySelectorAll使用介绍
2011/12/20 Javascript
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
微信小程序在text文本实现多种字体样式
2019/11/08 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python的re模块应用实例
2014/09/26 Python
python遍历目录的方法小结
2016/04/28 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
2018/07/12 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
HTML5 canvas实现的静态循环滚动播放弹幕
2021/01/05 HTML / CSS
全球销量第一生发产品:Viviscal
2017/12/21 全球购物
实习自我评价怎么写
2013/12/02 职场文书
志愿者服务感言
2014/02/27 职场文书
初三学生个人自我评定
2014/04/06 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
聚会通知怎么写
2015/04/23 职场文书
计算机教师工作总结
2015/08/13 职场文书
MySQL基础(二)
2021/04/05 MySQL
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS