PHP关于删除文件夹下面的所有子目录(包括文件夹)
代码如下
<?php
$path = './a';
function check($path){
if(file_exists($path)){
//echo dirname($path).'<br />';
$dh = opendir($path);
while($item = readdir($dh)){
if('.' == $item || '..' == $item){
continue;
}else if(is_dir($item)){
check($path.'/'.$item);
}else{
unlink($path.'/'.$item);//删除文件
}
}
closedir($dh);
if (rmdir($path.'/'.$item)){
echo "成功删除目录",$path,"<br />";
}
}
}
check($path);
?> 展开
//递归删除所有文件夹
function delDirAndFile( $dirName ){
if ( @$handle = opendir( "$dirName" ) ) {
while ( false !== ( $item = readdir( $handle ) ) ) {
if ( $item != "." && $item != ".." ) {
if ( is_dir( "$dirName/$item" ) ) {
delDirAndFile( "$dirName/$item" );
} else {
if( unlink( "$dirName/$item" ) ){
echo "成功删除文件: $dirName/$item".'<br>';
}
}
}
}
closedir( $handle );
if( rmdir( "$dirName/$item" ) ){
echo "成功删除目录:$dirName".'<br>';
}
}else{
echo "文件夹不存在!";
}
}
function deleteAll($path) {
$op = dir($path);
while(false != ($item = $op->read())) {
if($item == '.' || $item == '..') {
continue;
}
if(is_dir($op->path.'/'.$item)) {
deleteAll($op->path.'/'.$item);
rmdir($op->path.'/'.$item);
} else {
unlink($op->path.'/'.$item);
}
}
}
存在一点小问题:
function check($path){
if(file_exists($path)){
//echo dirname($path).'<br />';
$dh = opendir($path);
while($item = readdir($dh)){
if('.' == $item || '..' == $item){
continue;
}else if(is_dir($path.'/'.$item)){
check($path.'/'.$item);
}else{
unlink($path.'/'.$item);//删除文件
}
}
closedir($dh);
if (rmdir($path.'/'.$item)){
echo "成功删除目录",$path,"<br />";
}
}
}
目录路径没对上
function deleteRecursive($path)
{
$op = dir($path);
while ($item = $op->read()) {
if ($item == '.' || $item == '..') {
continue;
} else if (is_dir($op->path . '/' . $item)) {
deleteRecursive($op->path . '/' . $item);
} else {
unlink($op->path . '/' . $item);
}
}
rmdir($path);
}
这样写更好