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 24 PHP
PHP生成UTF8文件的方法
May 15 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
Jul 03 PHP
php unset全局变量运用问题的深入解析
Jun 17 PHP
PHP捕获Fatal error错误的方法
Jun 11 PHP
采用thinkphp自带方法生成静态html文件详解
Jun 13 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
Jun 21 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
Aug 21 PHP
php实现遍历多维数组的方法
Nov 25 PHP
PHP实现一个多功能购物网站的案例
Sep 13 PHP
php基于 swoole 实现的异步处理任务功能示例
Aug 13 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 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中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
PHP实现图片旋转效果实例代码
2014/10/01 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
判断文件是否正在被使用的JS代码
2013/12/21 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
jQuery实现给input绑定回车事件的方法
2017/02/09 Javascript
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
详解Vue路由开启keep-alive时的注意点
2017/06/20 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
结合Vue控制字符和字节的显示个数的示例
2018/05/17 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
axios实现文件上传并获取进度
2020/03/25 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
Python中生成器和迭代器的区别详解
2018/02/10 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
浅析python redis的连接及相关操作
2019/11/07 Python
Python 列表的清空方式
2020/01/13 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
Python 解析库json及jsonpath pickle的实现
2020/08/17 Python
Python request中文乱码问题解决方案
2020/09/17 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
最新大学生自我评价
2013/09/24 职场文书
个人工作总结范文2014
2014/11/07 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
2014年工作总结及2015工作计划
2014/12/12 职场文书
卫生保健工作总结2015
2015/05/18 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers
MyBatis在注解上使用动态SQL方式(@select使用if)
2022/07/07 Java/Android