PHP删除指定目录下面的所有文件和目录,可排除文件
时间:2023年10月04日
/来源:网络
/编辑:佚名
我真的哭了啊!
折腾半天,结果glob这个函数有点坑,无法获取到.开头的系统隐藏文件,于是折腾半天,原来发现还有其他函数可以查询所有文件!
PHP 删除指定目录下面的所有文件以及目录,函数两个参数,一个是删除的目录,一个是不需要删除的文件数组
function deleteDirectory($directory, $excludes = []) {
// 判断目录是否存在
if (!is_dir($directory)) {
throw new Exception("目录 $directory 不存在");
}
// 获取目录中的所有文件和目录
$files = array_diff(scandir($directory), ['.', '..']);
// 遍历所有文件和目录
foreach ($files as $file) {
$path = $directory . DIRECTORY_SEPARATOR . $file;
// 如果是目录,递归处理子目录
if (is_dir($path)) {
deleteDirectory($path, $excludes);
rmdir($path);
}
// 如果是文件,并且不在不需要删除的文件列表中,就删除文件
elseif (is_file($path) && !in_array($file, $excludes)) {
unlink($path);
}
}
}
该函数有两个参数:$directory 表示要删除的目录,$excludes 表示不需要删除的文件列表,是一个数组。如果要删除的目录不存在,函数会抛出异常。
函数首先使用 scandir 函数获取目录中的所有文件和目录,并使用 array_diff 函数去掉 . 和 ..,得到一个仅包含文件和目录名的数组。然后遍历所有文件和目录,如果是目录,就递归调用自身,处理子目录,并使用 rmdir 函数删除空目录;如果是文件,并且不在不需要删除的文件列表中,就使用 unlink 函数删除文件。
调用方法
// 删除 /path/to/directory 目录下的所有文件和目录,但不删除 1.php 和 2.php
$directory = '/path/to/directory';
$excludes = ['1.php', '2.php'];
deleteDirectory($directory, $excludes);
折腾半天,结果glob这个函数有点坑,无法获取到.开头的系统隐藏文件,于是折腾半天,原来发现还有其他函数可以查询所有文件!
PHP 删除指定目录下面的所有文件以及目录,函数两个参数,一个是删除的目录,一个是不需要删除的文件数组
function deleteDirectory($directory, $excludes = []) {
// 判断目录是否存在
if (!is_dir($directory)) {
throw new Exception("目录 $directory 不存在");
}
// 获取目录中的所有文件和目录
$files = array_diff(scandir($directory), ['.', '..']);
// 遍历所有文件和目录
foreach ($files as $file) {
$path = $directory . DIRECTORY_SEPARATOR . $file;
// 如果是目录,递归处理子目录
if (is_dir($path)) {
deleteDirectory($path, $excludes);
rmdir($path);
}
// 如果是文件,并且不在不需要删除的文件列表中,就删除文件
elseif (is_file($path) && !in_array($file, $excludes)) {
unlink($path);
}
}
}
该函数有两个参数:$directory 表示要删除的目录,$excludes 表示不需要删除的文件列表,是一个数组。如果要删除的目录不存在,函数会抛出异常。
函数首先使用 scandir 函数获取目录中的所有文件和目录,并使用 array_diff 函数去掉 . 和 ..,得到一个仅包含文件和目录名的数组。然后遍历所有文件和目录,如果是目录,就递归调用自身,处理子目录,并使用 rmdir 函数删除空目录;如果是文件,并且不在不需要删除的文件列表中,就使用 unlink 函数删除文件。
调用方法
// 删除 /path/to/directory 目录下的所有文件和目录,但不删除 1.php 和 2.php
$directory = '/path/to/directory';
$excludes = ['1.php', '2.php'];
deleteDirectory($directory, $excludes);
新闻资讯 更多
- 【建站知识】查询nginx日志状态码大于400的请求并打印整行04-03
- 【建站知识】Python中的logger和handler到底是个什么?04-03
- 【建站知识】python3拉勾网爬虫之(您操作太频繁,请稍后访问)04-03
- 【建站知识】xpath 获取meta里的keywords及description的方法04-03
- 【建站知识】python向上取整以50为界04-03
- 【建站知识】scrapy xpath遇见乱码解决04-03
- 【建站知识】scrapy爬取后中文乱码,解决word转为html 时cp1252编码问题04-03
- 【建站知识】scrapy采集—爬取中文乱码,gb2312转为utf-804-03