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 相关文章推荐
一个用于mysql的数据库抽象层函数库
Oct 09 PHP
PHP新手上路(十三)
Oct 09 PHP
PHP session会话的安全性分析
Sep 08 PHP
浅析linux下apache服务器的配置和管理
Aug 10 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
Sep 26 PHP
详细解读PHP的Yii框架中登陆功能的实现
Aug 21 PHP
PHP Header失效的原因分析及解决方法
Nov 16 PHP
[原创]php实现数组按拼音顺序排序的方法
May 03 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
php 的多进程操作实践案例分析
Feb 28 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
Apr 13 PHP
php优化查询foreach代码实例讲解
Mar 24 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
用文本作数据处理
2006/10/09 PHP
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
2010/06/21 PHP
PHP检测字符串是否为UTF8编码的常用方法
2014/11/21 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
js函数排序的实例代码
2013/07/01 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
jQuery深拷贝Json对象简单示例
2016/07/06 Javascript
AngularJS入门之动画
2016/07/27 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
webpack项目轻松混用css module的方法
2018/06/12 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
2020/04/23 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
Python的条件语句与运算符优先级详解
2015/10/13 Python
python调用外部程序的实操步骤
2019/03/04 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
python celery分布式任务队列的使用详解
2019/07/08 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
Python tkinter和exe打包的方法
2020/02/05 Python
python中的列表和元组区别分析
2020/12/30 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
linux比较文件内容的命令是什么
2013/03/04 面试题
北大自主招生自荐信
2013/10/19 职场文书
婚礼主持结束词
2014/03/13 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
企业年检委托书范本
2014/10/14 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python