PHP关于删除文件夹下面的所有子目录(包括文件夹)

2025-03-21 03:13:50
推荐回答(4个)
回答1:


//递归删除所有文件夹

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".'
';

}

}

}

}

closedir( $handle );

if( rmdir( "$dirName/$item" ) ){

echo "成功删除目录:$dirName".'
';

}

}else{

echo "文件夹不存在!";

}

}

回答2:

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);
        }
    
    }   
}

回答3:

存在一点小问题:

function check($path){		
if(file_exists($path)){
//echo dirname($path).'';
$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,"";
        }
}
}


目录路径没对上

回答4:

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);
}

这样写更好