使用PHP删除文件夹
文件夹中层级少
若是删除空文件夹使用rmdir()函数即可,但是若文件夹不为空则无法直接删除。
需用到递归函数
/**
* 删除目录
* @param string $path
* @return bool
*/
function delDir(string $path): bool
{
if (!is_dir($path)) {
return false;
}
$content = scandir($path);
foreach ($content as $v) {
if ('.' == $v || '..' == $v) {
continue;
}
$item = $path . '/' . $v;
if (is_file($item)) {
unlink($item);
continue;
}
delDir($item);
}
return rmdir($path);
}
子文件或子文件夹多
如果文件夹下的文件或子文件夹非常多,$content = scandir($path)
全部取出可能会导致内存溢出
可采用下面的方法,不一次性全部取出,而是依次取出
/**
* 删除目录
* @param string $path
* @return bool
*/
function delDir(string $path): bool
{
if (!is_dir($path)) {
return false;
}
$open = opendir($path);
if (!$open) {
return false;
}
while (($v = readdir($open)) !== false) {
if ('.' == $v || '..' == $v) {
continue;
}
$item = $path . '/' . $v;
if (is_file($item)) {
unlink($item);
continue;
}
delDir($item);
}
closedir($open);
return rmdir($path);
}