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桌面中心(一) 创建数据库
Mar 11 PHP
修改php.ini实现Mysql导入数据库文件最大限制的修改方法
Dec 11 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
May 08 PHP
PHP文件锁定写入实例解析
Jul 14 PHP
PHP @ at 记号的作用示例介绍
Oct 10 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
Nov 19 PHP
Yii实现MySQL多数据库和读写分离实例分析
Dec 03 PHP
CodeIgniter钩子用法实例详解
Jan 20 PHP
PHP图片加水印实现方法
May 06 PHP
php实现当前页面点击下载文件的简单方法
Sep 22 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
Jan 16 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
Jan 30 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函数method_exists()与is_callable()的区别
2013/06/21 PHP
php简单的留言板与回复功能具体实现
2014/02/19 PHP
PHP中SSO Cookie登录分析和实现
2015/11/06 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
2019/12/31 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
基于jQuery的图片左右无缝滚动插件
2012/05/23 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
JS限制输入框输入的实现代码
2018/07/02 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
React如何实现浏览器打印部分内容详析
2019/05/19 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
python获取网页中所有图片并筛选指定分辨率的方法
2018/03/31 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
Python网络爬虫四大选择器用法原理总结
2020/06/01 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
详解CSS3中@media的实际使用
2015/08/04 HTML / CSS
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
审计专业自荐信范文
2014/04/21 职场文书
大学同学会活动方案
2014/08/20 职场文书
员工培训协议书
2014/09/15 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
学校国庆节活动总结
2015/03/23 职场文书
HAM-2000摩机图
2021/04/22 无线电
详解Laravel框架的依赖注入功能
2021/05/27 PHP