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字符串截取中文截取2,单字节截取模式
Dec 10 PHP
php 从数据库提取二进制图片的处理代码
Sep 09 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
Feb 04 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
Aug 09 PHP
php json转换成数组形式代码分享
Nov 10 PHP
php导入大量数据到mysql性能优化技巧
Dec 29 PHP
php校验表单检测字段是否为空的方法
Mar 20 PHP
php自动给网址加上链接的方法
Jun 02 PHP
深入解析WordPress中加载模板的get_template_part函数
Jan 11 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
Jul 21 PHP
PHP获取ttf格式文件字体名的方法示例
Mar 06 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指定函数参数默认值示例代码
2013/12/04 PHP
php 批量查询搜狗sogou代码分享
2015/05/17 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
document.open() 与 document.write()的区别
2007/08/13 Javascript
基于jQuery的固定表格头部的代码(IE6,7,8测试通过)
2010/05/18 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
JS实现局部选择打印和局部不选择打印
2014/04/03 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
2015/09/06 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
8 个有用的JS技巧(推荐)
2019/07/03 Javascript
原生javascript如何实现共享onload事件
2020/07/03 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
详细介绍Python中的偏函数
2015/04/27 Python
详解在Python程序中使用Cookie的教程
2015/04/30 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
python实现图片插入文字
2019/11/26 Python
Python如何用filter函数筛选数据
2020/03/05 Python
pyqt5 QlistView列表显示的实现示例
2020/03/24 Python
python Tornado框架的使用示例
2020/10/19 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
The North Face意大利官网:服装、背包和鞋子
2020/06/17 全球购物
房地产员工找工作的自我评价
2013/11/15 职场文书
专业求职信撰写要诀
2014/02/18 职场文书
网络管理专业求职信
2014/03/15 职场文书
副处级干部考察材料
2014/05/17 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
企业安全生产月活动总结
2014/07/05 职场文书
热爱劳动主题班会
2015/08/14 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python