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 相关文章推荐
source.php查看源文件
Dec 09 PHP
php 破解防盗链图片函数
Dec 09 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
Oct 23 PHP
php数组函数序列之array_keys() - 获取数组键名
Oct 30 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
php面向对象中static静态属性和静态方法的调用
Feb 08 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
Dec 07 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
Jan 09 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
实例讲解PHP页面静态化
Feb 05 PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 13 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 csv操作类代码
2009/12/14 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
通过修改referer下载文件的方法
2008/05/11 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
JS逆序遍历实现代码
2014/12/02 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
angularJS结合canvas画图例子
2015/02/09 Javascript
纯javascript实现图片延时加载方法
2015/08/21 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
2017/04/24 Javascript
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
js匿名函数使用&传参(实例)
2017/09/08 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
2020/12/19 Vue.js
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
Python发展史及网络爬虫
2019/06/19 Python
Python爬虫爬取糗事百科段子实例分享
2020/07/31 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
香港化妆品经销商:我的公主
2016/08/05 全球购物
Laravel的加密解密与哈希实例讲解
2021/03/24 PHP
初中同学聚会邀请函
2014/02/03 职场文书
促销活动总结怎么写
2014/06/25 职场文书
企业挂职心得体会
2014/09/10 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书
python实现黄金分割法的示例代码
2021/04/28 Python
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript
Java实现多线程聊天室
2021/06/26 Java/Android