探讨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截取汉字乱码问题解决方法mb_substr函数的应用
Mar 30 PHP
php之XML转数组函数的详解
Jun 07 PHP
PHP可变函数的使用详解
Jun 14 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
Jun 29 PHP
PHP实现的MongoDB数据库操作类分享
May 12 PHP
php程序总是提示验证码输入有误解决方案
Jan 07 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
ThinkPHP框架分布式数据库连接方法详解
Mar 14 PHP
php修改数组键名的方法示例
Apr 15 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
php+croppic.js实现剪切上传图片功能
Aug 14 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
Oct 08 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单件模式结合命令链模式使用说明
2008/09/07 PHP
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
php模板原理讲解
2013/11/13 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
PHP CURL实现模拟登陆并上传文件操作示例
2020/01/02 PHP
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
nodejs实现的一个简单聊天室功能分享
2014/12/06 NodeJs
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
js实现下一页页码效果
2017/03/07 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
2019/07/30 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
Python生成随机数组的方法小结
2017/04/15 Python
Python模拟登陆实现代码
2017/06/14 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
python basemap 画出经纬度并标定的实例
2019/07/09 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
django 微信网页授权登陆的实现
2019/07/30 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
python对接ihuyi实现短信验证码发送
2020/05/10 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
化妆品活动策划方案
2014/05/23 职场文书
纪念九一八事变演讲稿1000字
2014/09/14 职场文书
2015年市场部工作总结
2015/04/30 职场文书
go web 预防跨站脚本的实现方式
2021/06/11 Golang
MySQL 聚合函数排序
2021/07/16 MySQL
详解Vue的列表渲染
2021/11/20 Vue.js