PHP删除目录/文件夹的三种方法
PHP #目录 #文件夹 #删除2012-05-18 09:39
1、递规法:利用递归一层一层的删。
01 | deleteDir( $dir ) |
02 | { |
03 | if ( rmdir ( $dir )==false && is_dir ( $dir )) { |
04 | if ( $dp = opendir( $dir )) { |
05 | while (( $file =readdir( $dp )) != false) { |
06 | if ( is_dir ( $file ) && $file != '.' && $file != '..' ) { |
07 | deleteDir( $file ); |
08 | } else { |
09 | unlink( $file ); |
10 | } |
11 | } |
12 | closedir ( $dp ); |
13 | } else { |
14 | exit ( 'Not permission' ); |
15 | } |
16 | } |
17 | } |
2、系统调用法
1 | function del_dir( $dir ) |
2 | { |
3 | if ( strtoupper ( substr (PHP_OS, 0, 3)) == 'WIN' ) { |
4 | $str = "rmdir /s/q " . $dir ; |
5 | } else { |
6 | $str = "rm -Rf " . $dir ; |
7 | } |
8 | } |
3、循环法
01 | function deltree( $pathdir ) |
02 | { |
03 | echo $pathdir ; //调试时用的 |
04 | if (is_empty_dir( $pathdir )) //如果是空的 |
05 | { |
06 | rmdir ( $pathdir ); //直接删除 |
07 | } |
08 | else |
09 | { //否则读这个目录,除了.和..外 |
10 | $d =dir( $pathdir ); |
11 | while ( $a = $d ->read()) |
12 | { |
13 | if ( is_file ( $pathdir . '/' . $a ) && ( $a != '.' ) && ( $a != '..' )){unlink( $pathdir . '/' . $a );} |
14 | //如果是文件就直接删除 |
15 | if ( is_dir ( $pathdir . '/' . $a ) && ( $a != '.' ) && ( $a != '..' )) |
16 | { //如果是目录 |
17 | if (!is_empty_dir( $pathdir . '/' . $a )) //是否为空 |
18 | { //如果不是,调用自身,不过是原来的路径+他下级的目录名 |
19 | deltree( $pathdir . '/' . $a ); |
20 | } |
21 | if (is_empty_dir( $pathdir . '/' . $a )) |
22 | { //如果是空就直接删除 |
23 | rmdir ( $pathdir . '/' . $a ); |
24 | } |
25 | } |
26 | } |
27 | $d ->close(); |
28 | echo "必须先删除目录下的所有文件" ; //我调试时用的 |
29 | } |
30 | } |
31 | function is_empty_dir( $pathdir ) |
32 | { |
33 | //判断目录是否为空 |
34 | $d =opendir( $pathdir ); |
35 | $i =0; |
36 | while ( $a =readdir( $d )) |
37 | { |
38 | $i ++; |
39 | } |
40 | closedir ( $d ); |
41 | if ( $i >2){ return false;} |
42 | else return true; |
43 | } |
相关文章
- PHP中的内存管理问题详解 2012/05/18
- php+fastcgi出现No input file specified.错误解决方法 2012/05/17
- PHP企业级应用之常见缓存技术篇 2012/05/17
- PHP站点安全配置 2012/05/17
- PHP企业级应用之WebService续篇 2012/05/17
- PHP企业级应用之WebService篇 2012/05/17
- PHP实现汉字转区位码的代码 2012/05/16
- PHP网站开发方案流程 2012/05/16
- PHP自定义urldecode函数避免二次解码导致加号丢失 2012/05/16
- 说下PHP的urlencode/urldecode/addslashes重复操作 2012/05/15