探讨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 相关文章推荐
一键删除顽固的空文件夹 软件下载
Jan 26 PHP
MYSQL 小技巧 -- LAST_INSERT_ID
Nov 24 PHP
供参考的 php 学习提高路线分享
Oct 23 PHP
PHP处理Json字符串解码返回NULL的解决方法
Sep 01 PHP
php定时执行任务设置详解
Feb 06 PHP
Laravel 5 学习笔记
Mar 06 PHP
php读取der格式证书乱码解决方法
Jun 22 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
May 30 PHP
浅谈Laravel队列实现原理解决问题记录
Aug 19 PHP
php使用curl下载指定大小的文件实例代码
Sep 30 PHP
php 读取文件夹下所有图片、文件的实例
Oct 17 PHP
Laravel 类和接口注入相关的代码
Oct 15 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
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
ThinkPHP路由详解
2015/07/27 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
Javascript的一种模块模式
2008/03/22 Javascript
JS 拼图游戏 面向对象,注释完整。
2009/06/18 Javascript
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
2015/12/07 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
Mac下通过brew安装指定版本的nodejs教程
2018/05/17 NodeJs
原生JS实现$.param() 函数的方法
2018/08/10 Javascript
微信小程序实现打卡日历功能
2020/09/21 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
Python使用微信SDK实现的微信支付功能示例
2017/06/30 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
Shopee新加坡:东南亚与台湾电商平台
2019/01/25 全球购物
简述synchronized和java.util.concurrent.locks.Lock的异同
2014/12/08 面试题
设计毕业生简历中的自我评价
2013/10/01 职场文书
家长会演讲稿范文
2014/01/10 职场文书
学雷锋演讲稿汇总
2014/05/10 职场文书
装修施工安全责任书
2014/07/24 职场文书
团员个人总结
2015/02/26 职场文书