如何正确使用php递归函数删除非空目录及子目录?

发布时间:2020-08-25编辑:脚本学堂
使用php递归函数正确删除非空目录的方法,php目录与文件的删除方法,当遇到非空目录时,考虑用php递归实现目录遍历与删除,是个不错的选择。

php递归函数

递归删除目录的思路

1、php递归遍历目录及子目录
2、使用 scandir 判断目录是否为空,为空则使用rmdir 删除。

例子,php递归函数 删除所有空目录:

复制代码 代码示例:
<?php
/** php递归函数 删除所有空目录
* @param String $path 目录路径
*/
function rm_empty_dir($path){
if(is_dir($path) && ($handle = opendir($path))!==false){
while(($file=readdir($handle))!==false){// 遍历文件夹
if($file!='.' && $file!='..'){
$curfile = $path.'/'.$file;// 当前目录
if(is_dir($curfile)){// 目录
rm_empty_dir($curfile);// 如果是目录则继续遍历
if(count(scandir($curfile))==2){//目录为空,=2是因为.和..存在
rmdir($curfile);// 删除空目录
}
}
}
}
closedir($handle);
}
}
$folder = '目标文件夹';
rm_empty_dir($folder);
?>
 

使用 shell 则简单很多:
 

find 目标文件夹 -mindepth 1 -depth -empty -type d -exec rm -r {} ;

二、php删除空目录的方法(非php递归函数方法)

php实现删除空目录的方法,rmdir函数的使用技巧

php通过rmdir()函数删除一个空目录

例子:
 

复制代码 代码示例:
<?php
if (file_exists("/temp/test")) {
   rmdir("/temp/test");
   print("Directory removed.n");
} else {
   print("Directory does not exist.n");
}
?>

第一次执行会返回:
Directory removed.

第二次执行,由于目录已经被删除,会返回:
Directory does not exist.