PHP下几种删除目录的方法总结


Posted in PHP onAugust 19, 2007

呵呵,忽然一个朋友问我如何删除目录,比如下面有文件呢,我说用递规呀,他说太慢了。于是就总结出了下面几种办法。

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。循环法   //from: http://www.knowsky.com/1148.html

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写的小东西
Dec 06 PHP
php学习笔记之 函数声明
Jun 09 PHP
php中hashtable实现示例分享
Feb 13 PHP
php使用function_exists判断函数可用的方法
Nov 19 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
Dec 15 PHP
php分页原理 分页代码 分页类制作教程
Sep 23 PHP
CI框架实现框架前后端分离的方法详解
Dec 30 PHP
php实现的mysqldb读写分离操作类示例
Feb 07 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
May 29 PHP
Yii2语言国际化自动配置详解
Aug 22 PHP
php无限级分类实现评论及回复功能
Feb 18 PHP
PHP读取目录树的实现方法分析
Mar 22 PHP
wordpress之wp-settings.php
Aug 17 #PHP
PHP4和PHP5性能测试和对比 测试代码与环境
Aug 17 #PHP
在PHP里得到前天和昨天的日期的代码
Aug 16 #PHP
PHP与MySQL开发中页面出现乱码的一种解决方法
Jul 29 #PHP
真正的ZIP文件操作类(php)
Jul 21 #PHP
php 用sock技术发送邮件的函数
Jul 21 #PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
Jul 21 #PHP
You might like
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
JavaScript控制Session操作方法
2013/01/17 Javascript
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
jquery 通过name快速取值示例
2014/01/24 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
详解nodejs微信公众号开发——3.封装消息响应模块
2017/04/10 NodeJs
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
jQuery替换节点元素的操作方法
2018/03/18 jQuery
vue实现抖音时间转盘
2019/09/08 Javascript
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
在Python的循环体中使用else语句的方法
2015/03/30 Python
初学Python函数的笔记整理
2015/04/07 Python
使用python实现生成用户信息
2017/03/20 Python
python实现反转部分单向链表
2018/09/27 Python
对python中的 os.mkdir和os.mkdirs详解
2018/10/16 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
python监控nginx端口和进程状态
2019/09/06 Python
python中必要的名词解释
2019/11/20 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
Python paramiko使用方法代码汇总
2020/11/20 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
使用Python实现音频双通道分离
2020/12/25 Python
造型师求职自荐信
2013/09/27 职场文书
生产主管岗位职责
2013/11/10 职场文书
入党积极分子思想汇报
2014/01/02 职场文书
军训 自我鉴定
2014/02/03 职场文书
2014年技术员工作总结
2014/11/18 职场文书
永远是春天观后感
2015/06/12 职场文书
springcloud之Feign超时问题的解决
2021/06/24 Java/Android