探讨PHP删除文件夹的三种方法


Posted in PHP onJune 09, 2013

1、递归法

deleteDir($dir)
{
if (rmdir($dir)==false && is_dir($dir)) {
    if ($dp = opendir($dir)) {
     while (($file=readdir($dp)) != false) {
      if (is_dir($file) && $file!='.' && $file!='..') {
       deleteDir($file);
      } else {
       unlink($file);
      }
     }
     closedir($dp);
    } else {
     exit('Not permission');
    }
}
}

2、系统调用法
function del_dir($dir)
{
if(strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
       $str = "rmdir /s/q " . $dir;
} else {
       $str = "rm -Rf " . $dir;
}
}

3、循环法
function deltree($pathdir)
{
echo $pathdir;//我调试时用的
if(is_empty_dir($pathdir))//如果是空的
      {
      rmdir($pathdir);//直接删除
      }
      else
      {//否则读这个目录,除了.和..外
          $d=dir($pathdir);
          while($a=$d->read())
          {
          if(is_file($pathdir.'/'.$a) && ($a!='.') && ($a!='..')){unlink($pathdir.'/'.$a);}
          //如果是文件就直接删除
          if(is_dir($pathdir.'/'.$a) && ($a!='.') && ($a!='..'))
          {//如果是目录
              if(!is_empty_dir($pathdir.'/'.$a))//是否为空
              {//如果不是,调用自身,不过是原来的路径+他下级的目录名
              deltree($pathdir.'/'.$a);
              }
              if(is_empty_dir($pathdir.'/'.$a))
              {//如果是空就直接删除
              rmdir($pathdir.'/'.$a);
              }
          }
          }
          $d->close();          
      echo "必须先删除目录下的所有文件";//我调试时用的
      }
}
function is_empty_dir($pathdir)
{
//判断目录是否为空,我的方法不是很好吧?只是看除了.和..之外有其他东西不是为空
$d=opendir($pathdir);
$i=0;
      while($a=readdir($d))
      {
      $i++;
      }
closedir($d);
if($i>2){return false;}
else return true;
}

PHP 相关文章推荐
谈谈PHP语法(5)
Oct 09 PHP
php 阴历-农历-转换类代码
Jan 16 PHP
php线性表顺序存储实现代码(增删查改)
Feb 16 PHP
php递归函数三种实现方法及如何实现数字累加
Aug 07 PHP
Symfony2学习笔记之插件格式分析
Mar 17 PHP
PHP递归遍历多维数组实现无限分类的方法
May 06 PHP
再谈PHP中单双引号的区别详解
Jun 12 PHP
php中各种定义变量的方法小结
Oct 18 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 PHP
Laravel框架实现利用中间件进行操作日志记录功能
Jun 06 PHP
thinkPHP5框架分页样式类完整示例
Sep 01 PHP
Thinkphp整合阿里云OSS图片上传实例代码
Apr 28 PHP
如何用php获取文件名后缀
Jun 09 #PHP
深入php多态的实现详解
Jun 09 #PHP
深入PHP autoload机制的详解
Jun 09 #PHP
定义php常量的详解
Jun 09 #PHP
基于php冒泡排序算法的深入理解
Jun 09 #PHP
深入apache host的配置详解
Jun 09 #PHP
探讨如何在PHP开启gzip页面压缩实例
Jun 09 #PHP
You might like
php 正则表达式小结
2009/08/31 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
php面向对象重点知识分享
2019/09/27 PHP
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
简单的js表格操作
2016/09/24 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
Webpack 4.x搭建react开发环境的方法步骤
2018/08/15 Javascript
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
小程序scroll-view安卓机隐藏横向滚动条的实现详解
2019/05/16 Javascript
基于JavaScript实现留言板功能
2020/03/16 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
2019/07/02 Python
Python continue语句实例用法
2020/02/06 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
css3旋转木马_动力节点Java学院整理
2017/07/12 HTML / CSS
Fanatics法国官网:美国体育电商
2019/08/27 全球购物
几个Shell Script面试题
2012/08/31 面试题
项目资料员岗位职责
2013/12/10 职场文书
物业工作计划书
2014/01/10 职场文书
贸易跟单员英文求职信
2014/04/19 职场文书
厨房管理计划书
2014/04/27 职场文书
技术比武方案
2014/05/19 职场文书
道路施工安全责任书
2014/07/24 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
汤姆叔叔的小屋读书笔记
2015/06/30 职场文书
学生会招新宣传语
2015/07/13 职场文书