探讨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编写PDF文档生成器
Oct 09 PHP
php格式化工具Beautify PHP小小BUG
Apr 24 PHP
apache+php+mysql安装配置方法小结
Aug 01 PHP
PHP面向对象概念
Nov 06 PHP
php object转数组示例
Jan 15 PHP
php解析url的三个示例
Jan 20 PHP
ThinkPHP中redirect用法分析
Dec 05 PHP
PHP把MSSQL数据导入到MYSQL的方法
Dec 27 PHP
PHP中FTP相关函数小结
Jul 15 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
Sep 02 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
Dec 13 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输出一个等腰三角形的方法
2015/05/12 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
基于PHP实现堆排序原理及实例详解
2020/06/19 PHP
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
jquery实现的可隐藏重现的靠边悬浮层实例代码
2013/05/27 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
js function定义函数的几种不错方法
2014/02/27 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
一个php+js实时显示时间问题
2015/10/12 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
解决vuex刷新状态初始化的方法实现
2019/08/15 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
2020/09/04 Javascript
python分割和拼接字符串
2013/11/01 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
HTML5移动端开发遇见的东西
2019/10/11 HTML / CSS
外贸公司实习自我鉴定
2013/09/24 职场文书
优秀村官事迹材料
2014/01/10 职场文书
小学生演讲稿
2014/01/12 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
2015出纳试用期工作总结
2014/12/12 职场文书
SqlServer: 如何更改表的文件组?(进而改变存储位置)
2021/04/05 SQL Server
5个实用的JavaScript新特性
2022/06/16 Javascript