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 相关文章推荐
实用函数5
Nov 08 PHP
php读取javascript设置的cookies的代码
Apr 12 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
xml在joomla表单中的应用详解分享
Jul 19 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
Aug 21 PHP
PHP中each与list用法分析
Jan 08 PHP
php文件上传类完整实例
May 14 PHP
phpmyadmin下载、安装、配置教程
May 16 PHP
lnmp安装多版本PHP共存的方法详解
Aug 02 PHP
PHP-FPM的配置与优化讲解
Mar 15 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 PHP
浅谈laravel中的关联查询with的问题
Oct 10 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设置session(过期、失效、有效期)
2015/11/12 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
PHP获取访问设备信息的方法示例
2019/02/20 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
js调用flash的效果代码
2008/04/26 Javascript
JS 拼图游戏 面向对象,注释完整。
2009/06/18 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
javascript的push使用指南
2014/12/05 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
Vue无限滑动周选择日期的组件的示例代码
2018/07/18 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
2018/10/19 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
微信小程序如何使用globalData的方法
2019/06/06 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
c++生成dll使用python调用dll的方法
2014/01/20 Python
Python实现多行注释的另类方法
2014/08/22 Python
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
详解Python的collections模块中的deque双端队列结构
2016/07/07 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
python 剪切移动文件的实现代码
2018/08/02 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
python实现五子棋游戏
2019/06/18 Python
Python文件操作方法详解
2020/02/09 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
国际商务专业学生个人的自我评价
2013/09/28 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers