1. 概述
在使用PHP进行开发过程中,有时候需要批量删除某个目录下的所有文件和文件夹,一般使用递归删除的方式来完成这个任务。在本文中,将介绍如何使用PHP来批量递归删除文件夹以及文件。
2. 批量递归删除文件夹
2.1 删除空的文件夹
要删除某个文件夹,可以使用rmdir函数。
if(is_dir($dir)){
rmdir($dir);
}
但是,rmdir函数要求文件夹为空,如果文件夹中有文件或者子文件夹就会删除失败。为了解决这个问题,需要使用递归删除的方式。
2.2 递归删除文件和文件夹
要递归删除文件和文件夹,可以使用以下函数:
/**
* 递归删除目录及目录下的文件和子目录
* @param string $dir 待删除的目录
*/
function delDirAndFile($dir){
$dh=opendir($dir);
while (($file=readdir($dh))!==false) {
if($file!="." && $file!="..") {
$fullpath=$dir."/".$file;
if(!is_dir($fullpath)) {
unlink($fullpath);
} else {
delDirAndFile($fullpath);
}
}
}
closedir($dh);
if(rmdir($dir)) {
return true;
} else {
return false;
}
}
这个函数采用了递归方式,首先打开目录,遍历目录下的文件和文件夹。对于文件,直接删除。对于文件夹,递归调用delDirAndFile函数。最后删除空的目录,返回结果。
3. 代码实现
下面是一个实现批量递归删除文件和文件夹的示例代码:
/**
* 批量递归删除文件和文件夹
* @param string $dir 待删除的目录
*/
function delAll($dir){
if (!is_dir($dir)) {
die('目录不存在!');
}
delDirAndFile($dir);
}
//测试
$dir="testDir";
delAll($dir);
其中,testDir是待删除的目录。
4. 总结
本文介绍了使用PHP批量递归删除文件夹以及文件。通过递归删除的方式,可以删除任意深度的文件夹及其下的所有文件和子目录。在使用时需要注意保护好重要的文件,避免误删除。