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也可以?成Shell Script
Oct 09 PHP
PHP生成便于打印的网页
Oct 09 PHP
php cookie 登录验证示例代码
Mar 16 PHP
PHP开发不能违背的安全规则 过滤用户输入
May 01 PHP
一个PHP验证码类代码分享(已封装成类)
Jul 17 PHP
php 文件上传实例代码
Apr 19 PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 PHP
php将图片保存为不同尺寸图片的图片类实例
Mar 30 PHP
smarty的section嵌套循环用法示例
May 28 PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 PHP
YII2 实现多语言配置的方法分享
Jan 11 PHP
PHP数组对象与Json转换操作实例分析
Oct 22 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
如何开始收听短波广播
2021/03/01 无线电
php简单实现多语言切换的方法
2016/05/09 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
2019/10/10 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
node.js中的fs.lstatSync方法使用说明
2014/12/16 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
将angular-ui的分页组件封装成指令的方法详解
2017/05/10 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
layui表格 列自动适应大小失效的解决方法
2019/09/06 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
2019/11/15 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
2020/10/30 Javascript
python中requests小技巧
2017/05/10 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
Python3之读取连接过的网络并定位的方法
2018/04/22 Python
django如何连接已存在数据的数据库
2018/08/14 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
英国乡村时尚和宠物用品专家:Pet & Country
2018/07/02 全球购物
解释i节点在文件系统中的作用
2013/11/26 面试题
北京大学自荐信范文
2014/01/28 职场文书
广告学毕业生求职信
2014/01/30 职场文书
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
家教广告词
2014/03/19 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
教师批评与自我批评
2014/10/15 职场文书
品德与社会教学反思
2016/02/24 职场文书
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers