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 相关文章推荐
MyEclipse常用配置图文教程
Sep 11 PHP
thinkphp3.0输出重复两次的解决方法
Dec 19 PHP
php数组使用规则分析
Feb 27 PHP
php单例模式实现方法分析
Mar 14 PHP
使用图灵api创建微信聊天机器人
Jul 23 PHP
php格式化json函数示例代码
May 12 PHP
php实现图片以base64显示的方法
Oct 13 PHP
PHP获取文本框、密码域、按钮的值实例代码
Apr 19 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
Docker搭建自己的PHP开发环境
Feb 24 PHP
php 实现银联商务H5支付的示例代码
Oct 12 PHP
goto语法在PHP中的使用教程
Sep 17 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与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
javascript getElementsByClassName函数
2010/04/01 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
Uploadify上传文件方法
2016/03/16 Javascript
微信小程序 教程之模块化
2016/10/17 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
jQuery实现本地存储
2020/12/22 jQuery
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
python实现寻找最长回文子序列的方法
2018/06/02 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
2019/06/25 Python
Python集合基本概念与相关操作实例分析
2019/10/30 Python
wxPython绘图模块wxPyPlot实现数据可视化
2019/11/19 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
C和C++经典笔试题附答案解析
2014/08/18 面试题
三问三解心得体会
2014/09/05 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
礼貌问候语大全
2015/11/10 职场文书
《比的意义》教学反思
2016/02/18 职场文书
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js