我想删除一个目录下的目录及文件,但保留最上阶目录. 如何说, 要删除/upload/下的所有目录及文件,但保留/upload目录.
下面函数会把/upload目录也删除function delDir($dir) {
//先删除目录下的文件:
$dh=opendir($dir);
while ($file=readdir($dh)) {
if($file!="." && $file!="..") {
$fullpath=$dir."/".$file;
if(!is_dir($fullpath)) {
unlink($fullpath);
} else {
delDir($fullpath);
}
}
} closedir($dh);
//删除当前文件夹:
if(rmdir($dir)) {
return true;
} else {
return false;
}
}
下面函数会把/upload目录也删除function delDir($dir) {
//先删除目录下的文件:
$dh=opendir($dir);
while ($file=readdir($dh)) {
if($file!="." && $file!="..") {
$fullpath=$dir."/".$file;
if(!is_dir($fullpath)) {
unlink($fullpath);
} else {
delDir($fullpath);
}
}
} closedir($dh);
//删除当前文件夹:
if(rmdir($dir)) {
return true;
} else {
return false;
}
}
//删除当前文件夹:
/* if(rmdir($dir)) {
return true;
} else {
return false;
}
*/
//先删除目录下的文件:
$dh=opendir($dir);
while ($file=readdir($dh)) {
if($file!="." && $file!="..") {
$fullpath=$dir."/".$file;
if(!is_dir($fullpath)) {
unlink($fullpath);
} else {
delDir($fullpath);
}
}
} closedir($dh);}
$t = array();
$dh = opendir($dir);
while ($file=readdir($dh)) {
if($file!="." && $file!="..") {
$fullpath=$dir."/".$file;
if(!is_dir($fullpath)) {
unlink($fullpath);
} else {
delDir($fullpath);
$t[] = $fullpath;//由于目录被占用,不能删除。保存起来
}
}
}
closedir($dh);
if($t) array_map('rmdir', $t);//删除所有的子目录
}
把后面的rmdir($dir)删除掉,目录下的文件夹是不删除的.只删除文件.3#楼
斑竹的代码可行,我测试下.
} else {
delDir($fullpath);//这里并没有承接delDir的返回值
}
返回是没有意义的。所以我没有书写返回如需要返回要这样做function delDir($dir) {
$t = array();
$r = true;
$dh = opendir($dir);
while ($file=readdir($dh)) {
if($file!="." && $file!="..") {
$fullpath=$dir."/".$file;
if(!is_dir($fullpath)) {
unlink($fullpath);
} else {
$r &= delDir($fullpath);
$t[] = $fullpath;//由于目录被占用,不能删除。保存起来
}
}
}
closedir($dh);
if($t) foreach($t as $f) $r &= rmdir($f);//删除所有的子目录
return $r;
}
如果删除失败有操作的话,你还需添加代码