探讨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 相关文章推荐
一个阿拉伯数字转中文数字的函数
Oct 09 PHP
PHP实现MVC开发得最简单的方法――模型
Apr 10 PHP
PHP开发中常用的字符串操作函数
Feb 08 PHP
Mac环境下php操作mysql数据库的方法分享
May 11 PHP
PHP+MySQL实现无极限分类栏目的方法
Dec 23 PHP
PHP实现批量上传单个文件
Dec 29 PHP
PHP数组实例详解
Jun 26 PHP
php中mkdir()函数的权限问题分析
Sep 24 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
thinkPHP5框架接口写法简单示例
Aug 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函数代码
2010/04/22 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
Vue脚手架的简单使用实例
2018/07/10 Javascript
详解微信小程序中组件通讯
2018/10/30 Javascript
vue+iview 兼容IE11浏览器的实现方法
2019/01/07 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
[07:40]DOTA2每周TOP10 精彩击杀集锦vol.4
2014/06/25 DOTA
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
Python 自动刷博客浏览量实例代码
2017/06/14 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
python字符串的拼接方法总结
2019/11/18 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
Python如何省略括号方法详解
2020/03/21 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
用css3实现转换过渡和动画效果
2020/03/13 HTML / CSS
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
挂牌仪式主持词
2014/03/20 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
12.4全国法制宣传日活动方案
2014/11/02 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书
工程移交协议书
2016/03/24 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL
索尼ICF-5900W收音机测评
2022/04/24 无线电