首页 > 代码库 > php中通过递归实现删除目录下的所有文件

php中通过递归实现删除目录下的所有文件

(本文转载于:www.klsele.com.cn

php中通过递归实现删除目录下的所有文件。,有需要的朋友可以参考下。

 

最近遇到一个实际问题,需要清空制定目录下的所有文件及清空数据库。清空数据库不难,但要如何递归删除一个目录下的所有文件呢。 于是去网上研究了下资料再加上自己琢磨解决了这一问题。

先贴代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
function delFile($dirName){
    if ($handle = opendir("$dirName")){
        while (($item = readdir($handle))!=false){
            if ($item!="." && $item!="..")  {
                if ( is_dir( "$dirName/$item" ) ) { 
                        delFileUnderDir( "$dirName/$item" ); 
                } else unlink("$dirName/$item");
        }
    }
    closedir($handle);
}
?>
 
 
<?php
    delFile(‘/home/sources‘);
?>

  先讲解几个函数:

 

opendir() :函数打开一个目录句柄,可由 closedir(),readdir() 和 rewinddir() 使用。

若成功,则该函数返回一个目录流,否则返回 false 以及一个 error。可以通过在函数名前加上 "@" 来隐藏 error 的输出。例如$dir=@ opendir("image");

readdir():返回由opendir函数打开的目录句柄中的条目,即顺序返回文件夹中的文件名,顺序按照文件系统中制定的排序方式。

id_dir():即检测参数文件是否为目录,如果是返回true.

un_link():即删除制定文件。

所以程序执行思路为:函数调用主目录,然后顺序检测每一文件是否为目录,如果为目录则递归调用函数,并对不为目录的文件进行删除,直到遍历完所有的文件。

这个程序只实现删除文件夹里面的内容,而没有删除文件夹本身,如果要实现这一目的,加上下面代码即可:

rmdir($dirName);


http://108.187.5.2
http://108.187.5.3
http://108.187.5.4
http://108.187.5.5
http://108.187.5.6
http://108.187.5.7
http://108.187.5.8
http://108.187.5.9
http://108.187.5.10
http://108.187.5.11
http://108.187.5.12
http://108.187.5.13
http://108.187.5.14
http://108.187.5.15
http://108.187.5.16
http://108.187.5.17
http://108.187.5.18
http://108.187.5.19
http://108.187.5.20
http://108.187.5.21
http://108.187.5.22
http://108.187.5.23
http://108.187.5.24
http://108.187.5.25
http://108.187.5.26
http://108.187.5.27
http://108.187.5.28
http://108.187.5.29
http://108.187.5.30
http://108.187.5.31
http://108.187.5.32
http://108.187.5.33
http://108.187.5.34
http://108.187.5.35
http://108.187.5.36
http://108.187.5.37
http://108.187.5.38
http://108.187.5.39
http://108.187.5.40
http://108.187.5.41
http://108.187.5.42
http://108.187.5.43
http://108.187.5.44
http://108.187.5.45
http://108.187.5.46
http://108.187.5.47
http://108.187.5.48
http://108.187.5.49
http://108.187.5.50
http://108.187.5.51
http://108.187.5.52
http://108.187.5.53
http://108.187.5.54
http://108.187.5.55
http://108.187.5.56
http://108.187.5.57
http://108.187.5.58
http://108.187.5.59
http://108.187.5.60
http://108.187.5.61
http://108.187.5.62
http://108.187.5.63
http://108.187.5.64
http://108.187.5.65
http://108.187.5.66
http://108.187.5.67
http://108.187.5.68
http://108.187.5.69
http://108.187.5.70
http://108.187.5.71
http://108.187.5.72
http://108.187.5.73
http://108.187.5.74
http://108.187.5.75
http://108.187.5.76
http://108.187.5.77
http://108.187.5.78
http://108.187.5.79
http://108.187.5.80
http://108.187.5.81
http://108.187.5.82
http://108.187.5.83
http://108.187.5.84
http://108.187.5.85
http://108.187.5.86
http://108.187.5.87
http://108.187.5.88
http://108.187.5.89
http://108.187.5.90
http://108.187.5.91
http://108.187.5.92
http://108.187.5.93
http://108.187.5.94
http://108.187.5.95
http://108.187.5.96
http://108.187.5.97
http://108.187.5.98
http://108.187.5.99
http://108.187.5.100
http://108.187.5.101
http://108.187.5.102
http://108.187.5.103
http://108.187.5.104
http://108.187.5.105
http://108.187.5.106
http://108.187.5.107
http://108.187.5.108
http://108.187.5.109
http://108.187.5.110
http://108.187.5.111
http://108.187.5.112
http://108.187.5.113
http://108.187.5.114
http://108.187.5.115
http://108.187.5.116
http://108.187.5.117
http://108.187.5.118
http://108.187.5.119
http://108.187.5.120
http://108.187.5.121
http://108.187.5.122
http://108.187.5.123
http://108.187.5.124
http://108.187.5.125
http://108.187.5.126
http://108.187.5.127
http://108.187.5.128
http://108.187.5.129
http://108.187.5.130
http://108.187.5.131
http://108.187.5.132
http://108.187.5.133
http://108.187.5.134
http://108.187.5.135
http://108.187.5.136
http://108.187.5.137
http://108.187.5.138
http://108.187.5.139
http://108.187.5.140
http://108.187.5.141
http://108.187.5.142
http://108.187.5.143
http://108.187.5.144
http://108.187.5.145
http://108.187.5.146
http://108.187.5.147
http://108.187.5.148
http://108.187.5.149
http://108.187.5.150
http://108.187.5.151
http://108.187.5.152