php学习笔记:利用递归实现删除文件目录

直接删除目录,如果是空目录是可以删除,如果不是空目录,这时候只能先删除目录里面的文件,然后再删除目录。我封装了个删除函数,然后直接调用这个函数。喜欢的可以直接拿去用,编码是gbk的,使用时候注意下编码。

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2016/9/10 0010
 * Time: 20:27
 */
//删除文件,先删除文件内部的文件,再删除文件夹
header("Content-type: text/html; charset=gbk");
function deldir($dir){
        $dh=opendir($dir);
        while($file=readdir($dh)){
            if($file!="." && $file!=".."){//判断是不是本目录和上级目录
                if(!is_dir($dir."/".$file)){
                    unlink($dir."/".$file);
                }else{
                    //递归
                    deldir($dir."/".$file);
                }
            }
        }
        closedir($dh);
        if(rmdir($dir)){
            return true;
        }else{
            return false;
        }
    }
    //删除函数结束
   if(deldir("test")){
        echo ‘删除文件成功‘;
       die();
   }else
       echo ‘删除文件失败‘;
       die();
时间: 2024-10-05 18:12:41

php学习笔记:利用递归实现删除文件目录的相关文章

android学习笔记——利用BaseAdapter生成40个列表项

RT: main.xml ? 1 2 3 4 5 6 7 8 9 10 11 12 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"               android:orientation="vertical"        

sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map)

sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map) 这几天学习和查看了jQuery和Property这两个很流行的前端库的御用选择器组件Sizzle.js的源代码,收获还是相对多的!之前一直做使用Java语言开发,其丰富的组件类库使得开发效率那叫一个快呀!突然转来做JavaScript一时间还有点儿不适应(快半年了),不过自从看见那么多漂亮的网站和对JavaScript接触的越来越多,也发现了其中的一些乐趣.正如自己一直坚信的那样,编程语言仅仅是工具,重要的是编程思想!使用Jav

GitHub学习笔记(五)- 删除文件

1.添加到Git并提交的文件被删除后,因工作区和版本库不一致,git status命令会告诉我们哪些文件被删除了. 2.1.确定要从版本库中删除该文件,用命令git rm删除,并且git commit,文件从版本库中被删除. 2.误删,利用git checkout命令用版本库里的版本替换工作区的版本,还原文件.

利用递归级联删除的代码

级联树状结构,删除的时候,需要一级一级查找,并一级级删除操作,如此反复操作,需要不断调用同一个函数,所以这里使用递归操作十分方便 递归函数需要单独书写,并在方法中调用. 以下示例代码,为一个级联删除,有个父id 然后不断查找其子id 并删除 通过子id 继续查找其id的子id 删除,由于多语句操作,所以使用了事物手动提交方式 (其中处理异常方式不严谨!!) /** * 级联删除的递归函数 * @param conn 调用者需要将其连接对象传入,方便事物操作 * @param id 将删除的父id

【学习笔记】&quot;ListView滑动删除 ,仿腾讯QQ&quot;(二)

今天继续学习"鸿祥_"大神的写的"ListView滑动删除,仿腾讯QQ" . 1.关于dispatchTouchEvent 之前,只用过onTouchEvent,现在才知道一个Touch事件居然如此复杂.OK,集中精力,且看下文(本段内容主要参考Android dispatchTouchEvent介绍): 一个最简单的屏幕触摸动作触发了一系列Touch事件:ACTION_DOWN->ACTION_MOVE->ACTION_MOVE->ACTION_

【学习笔记】&quot;ListView滑动删除 ,仿腾讯QQ&quot;(一)

今天看了"鸿祥_"大神的写的"ListView滑动删除,仿腾讯QQ" .大神果然是大神,第一篇文章,我就看不懂,好多知识需要学习. 1.  文中的一个声明:private LayoutInflater mInflater; 什么是LayoutInflater? 答:主要参考了这篇文章 Android LayoutInflater详解 在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInfl

Hibernate学习笔记(一):级联删除

一对多的关系映射 在一的一方配置文件中将会配置set节点信息: *.hbm.xml配置文件中set节点的属性: Lazy:默认是true 即使用延迟加载,false表示即时加载: Order-by:一的一方set集合内多的一方实体集合的排序方式 默认是主键排序 但可以更改: Cascade:是否使用级联操作:配置方法:cascade的值有如下几个: all: 所有情况下均进行关联操作,即save-update和delete. none: 所有情况下均不进行关联操作.这是默认值. save-upd

【学习笔记】&quot;ListView滑动删除 ,仿腾讯QQ&quot;(三)

今天继续学习"鸿祥_"大神的写的"ListView滑动删除,仿腾讯QQ" . 今天,我准备学习并理清QQListView的逻辑. 1.自定义ListView 先看看布局文件activity_main.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.c

红黑树学习笔记(3)-删除操作

1.设删除的节点为$z$,另外定义节点$x,y$如下: $y=\left\{\begin{matrix}z & z的左孩子或右孩子为空节点\\ Successor(z) & otherwise\end{matrix}\right.$ $x=\left\{\begin{matrix}y.left & y的左孩子不为空\\ y.right & otherwise\end{matrix}\right.$ 其中$Successor$函数的定义在这里 接下来,用$x$替换节点$y$,