探讨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 相关文章推荐
3.从实例开始
Oct 09 PHP
杏林同学录(三)
Oct 09 PHP
一个取得文件扩展名的函数
Oct 09 PHP
一个PHP操作Access类(PHP+ODBC+Access)
Jan 02 PHP
php生成局部唯一识别码LUID的代码
Oct 06 PHP
php自动加载autoload机制示例分享
Feb 20 PHP
使用php清除bom示例
Mar 03 PHP
php计算当前程序执行时间示例
Apr 24 PHP
php生成shtml类用法实例
Dec 09 PHP
php中判断数组相等的方法以及数组运算符介绍
Mar 30 PHP
php计算一个文件大小的方法
Mar 30 PHP
php实现的后台表格分页功能示例
Oct 23 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
How do I change MySQL timezone?
2008/03/26 PHP
用php将任何格式视频转为flv的代码
2009/09/03 PHP
PHP5各个版本的新功能和新特性总结
2014/03/16 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
9款2014最热门jQuery实用特效推荐
2014/12/07 Javascript
JS控制表格实现一条光线流动分割行的方法
2015/03/09 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
Javascript基础_简单比较undefined和null 值
2016/06/14 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
微信小程序App生命周期详解
2018/01/31 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
Python简单日志处理类分享
2015/02/14 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
python 接口返回的json字符串实例
2018/03/27 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
2019/06/17 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
python 微信好友特征数据分析及可视化
2020/01/07 Python
python实现猜数游戏
2020/03/27 Python
俄罗斯汽车零件和配件在线商店:CarvilleShop
2019/11/29 全球购物
如果有两个类A,B,怎么样才能使A在发生一个事件的时候通知B
2016/03/12 面试题
普通话宣传标语
2014/06/26 职场文书
见习报告怎么写
2014/10/31 职场文书
个人党性锻炼总结
2015/03/05 职场文书
springboot集成springCloud中gateway时启动报错的解决
2021/07/16 Java/Android
MySQL空间数据存储及函数
2021/09/25 MySQL
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers