PHP删除目录和目录内所有的下级目录、文件代码

使用PHP删除目录及其子目录

介绍

删除目录的常用方法是unlink()函数,但是这个函数不能删除目录。有很多方法可以删除目录和目录中的所有文件,包括执行系统命令、手动遍历并删除目录和目录中的文件,和使用递归函数。本文将介绍如何使用递归函数删除目录和目录中的所有文件。

准备

在删除目录之前,需要检查权限、是否存在和是否是一个目录。这可以使用PHP内置的函数进行。

确定权限

以下代码展示如何检查文件是否可写:

if (is_writable($dir)) {

// 可写

} else {

// 不可写

}

目录是否存在

以下代码展示如何检查目录是否存在:

if (file_exists($dir)) {

// 存在

} else {

// 不存在

}

是否是目录

以下代码展示如何检查文件是否是一个目录:

if (is_dir($dir)) {

// 是目录

} else {

// 不是目录

}

删除目录及其中文件

删除文件夹及其内容需要使用递归函数。 recursion(递归) 是一种自相似的技术,经常出现在计算机和数学领域中。递归函数是调用自身的函数。在我们的例子中,函数deleteDirRecursive()会调用自身以删除所有目录和文件。

function deleteDirRecursive($dir) {

// 确定文件夹是否存在

if (!file_exists($dir)) {

return false;

}

// 判断文件夹是否可写

if (!is_writable($dir)) {

return false;

}

// 如果是一个目录则执行

if (is_dir($dir)) {

foreach (scandir($dir) as $file) {

// 忽略 . 和 ..

if ($file !== '.' && $file !== '..') {

// 如果当前是目录递归调用自身

if (is_dir($dir . '/' . $file)) {

deleteDirRecursive($dir . '/' . $file);

} else {

// 删除文件

unlink($dir . '/' . $file);

}

}

}

// 删除最外层目录

rmdir($dir);

return true;

}

}

运行

要运行这个函数,只需要指定您要删除的文件夹路径即可:

deleteDirRecursive('/path/to/dir');

此函数将一个目录及其中的所有子目录和文件删除。

总结

使用递归函数是一种十分方便的方法来删除目录和目录中的文件。但是,执行这个函数前应检查权限、目录是否存在以及文件是否是目录。

后端开发标签