php批量递归删除文件夹以文件

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批量递归删除文件夹以及文件。通过递归删除的方式,可以删除任意深度的文件夹及其下的所有文件和子目录。在使用时需要注意保护好重要的文件,避免误删除。

后端开发标签