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个人网站架设连环讲(四)
Oct 09 PHP
PHP调用Twitter的RSS的实现代码
Mar 10 PHP
php多个文件及图片上传实例详解
Nov 10 PHP
主流PHP框架的优缺点对比分析
Dec 25 PHP
php文件压缩之PHPZip类用法实例
Jun 18 PHP
微信公众号开发之语音消息识别php代码
Aug 08 PHP
PHP实现截取中文字符串不出现?号的解决方法
Dec 29 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
PHP设计模式之建造者模式定义与用法简单示例
Aug 13 PHP
laravel中的一些简单实用功能
Nov 03 PHP
laravel框架上传图片实现实时预览功能
Oct 14 PHP
thinkphp框架类库扩展操作示例
Nov 26 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
对google个性主页的拖拽效果的js的完整注释[转]
2007/04/10 Javascript
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
JS实现响应鼠标点击动画渐变弹出层效果代码
2016/03/25 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
[48:27]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
Python温度转换实例分析
2018/01/17 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
Python根据服务获取端口号的方法
2019/09/25 Python
Ellos瑞典官网:北欧地区时尚、美容和住宅领域领先的电子商务网站
2019/11/21 全球购物
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
如何实现一个自定义类的序列化
2012/05/22 面试题
大四学生毕业自荐信
2013/11/07 职场文书
土木工程毕业生自荐信
2013/11/12 职场文书
我的五年职业生涯规划
2014/01/23 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
单位介绍信格式
2015/01/31 职场文书
好人好事新闻稿
2015/07/17 职场文书
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js