探讨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制作静态网站的模板框架(一)
Oct 09 PHP
UCenter Home二次开发指南
May 28 PHP
PHP 数组排序方法总结 推荐收藏
Jun 30 PHP
PHP函数学习之PHP函数点评
Jul 05 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
yii操作session实例简介
Jul 31 PHP
php多线程实现方法及用法实例详解
Oct 26 PHP
Symfony2实现在doctrine中内置数据的方法
Feb 05 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
Jun 08 PHP
php使用curl伪造来源ip和refer的方法示例
May 08 PHP
Laravel框架Eloquent ORM修改数据操作示例
Dec 03 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
Jun 05 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 连接mysql连接被重置的解决方法
2011/02/15 PHP
openflashchart 2.0 简单案例php版
2012/05/21 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
分享PHP计算两个日期相差天数的代码
2015/12/23 PHP
幻灯片带网页设计中的20个奇妙应用示例小结
2012/05/27 Javascript
jquery(hide方法)隐藏指定元素实例
2013/11/11 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
谷歌地图打不开的解决办法
2014/08/07 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
2017/04/12 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
js对象简介与基本用法示例
2020/03/13 Javascript
Python记录详细调用堆栈日志的方法
2015/05/05 Python
小小聊天室Python代码实现
2016/08/17 Python
Python合并字典键值并去除重复元素的实例
2016/12/18 Python
对python中的高效迭代器函数详解
2018/10/18 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
Django Path转换器自定义及正则代码实例
2020/05/29 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
Python Serial串口基本操作(收发数据)
2020/11/06 Python
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
EJB timer的种类
2014/10/28 面试题
食品安全汇报材料
2014/08/18 职场文书
法定代表人资格证明书
2014/09/11 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
golang goroutine顺序输出方式
2021/04/29 Golang
python基础学习之生成器与文件系统知识总结
2021/05/25 Python
nginx location 带斜杠【 / 】与不带的区别
2022/04/13 Servers