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抽象工厂模式(Elgg)
Mar 21 PHP
通过PHP修改Linux或Unix口令的方法分享
Jan 30 PHP
模板引擎smarty工作原理以及使用示例
May 25 PHP
PHP多线程之内部多线程实例分析
Mar 09 PHP
PHP生成唯一订单号的方法汇总
Apr 16 PHP
wamp服务器访问php非常缓慢的解决过程
Jul 01 PHP
php创建桌面快捷方式实现方法
Dec 31 PHP
实例讲解PHP设计模式编程中的简单工厂模式
Feb 29 PHP
joomla组件开发入门教程
May 04 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
Aug 12 PHP
PHP中Session ID的实现原理实例分析
Aug 17 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
拖动table标题实现改变td的大小(css+js代码)
2013/04/16 Javascript
jquery实现弹出层完美居中效果
2014/03/03 Javascript
JS中prototype的用法实例分析
2015/03/19 Javascript
浅谈addEventListener和attachEvent的区别
2016/07/14 Javascript
JS for...in 遍历语句用法实例分析
2016/08/24 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
QRCode.js二维码生成并能长按识别
2018/10/16 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
python根据出生年份简单计算生肖的方法
2015/03/27 Python
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
python对list中的每个元素进行某种操作的方法
2018/06/29 Python
Python爬虫学习之翻译小程序
2019/07/30 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
python列表推导式入门学习解析
2019/12/02 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
C语言笔试题回忆
2015/04/02 面试题
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
房屋委托书范本
2014/04/04 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
2014年妇幼保健工作总结
2014/12/08 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
人民的好儿女观后感
2015/06/18 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
《将心比心》教学反思
2016/02/23 职场文书
年终工作总结范文
2019/06/20 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python
详解thinkphp的Auth类认证
2021/05/28 PHP
一级电子管军用接收机测评
2022/04/05 无线电