- 论坛徽章:
- 0
|
PHP本身有一个rmdir函数可以用来删除目录,不过要求必须是空目录,本文列举了三种方法。
1、递规法;
2、系统调用法;
3、循环法。
1、递规法:利用递归一层一层的删。- function 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、循环法- function deltree($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;
- }
复制代码 |
评分
-
查看全部评分
|