/**
* 删除文件目录及文件
* @param $path 例如:../uploads/test/20221122/
* @return bool
*/
public function deldir($path)
{
//如果是目录则继续
if (is_dir($path)) {
//扫描一个文件夹内的所有文件夹和文件并返回数组
$p = scandir($path);
foreach ($p as $val) {
//排除目录中的.和..
if ($val != "." && $val != "..") {
//如果是目录则递归子目录,继续操作
if (is_dir($path . $val)) {
//子目录中操作删除文件夹和文件
$this->deldir($path . $val . '/');
//目录清空后删除空文件夹
@rmdir($path . $val . '/');
} else {
//如果是文件直接删除
@unlink($path . $val);
}
}
}
//删除空目录
@rmdir($path);
} else {
return false;
}
}
/**
* 删除目录及下属所有文件:
* @param string $dir
*/
function del_dir($dir)
{
if (file_exists($dir)) {
if ($handle = @opendir($dir)) {
while ($filename = readdir($handle)) {
if ($filename != '.' && $filename != '..') { // 排除.和..这两个特殊目录
$sub_file = $dir . '/' . $filename;
if (is_dir($sub_file)) // 判断当前是否为目录
del_dir($sub_file); // 递归调用删除子目录
if (is_file($sub_file)) // 判断是否为文件
unlink($sub_file); // 直接删除文件
}
}
closedir($handle); // 关闭文件资源
rmdir($dir); // 删除空目录
}
}
}
// 删除文件夹
protected function removeFile($folder)
{
// 先删除目录下的文件
$dh = opendir(realpath($folder));
while ($file = readdir($dh)) {
if ($file != '.' && $file != '..') {
$fullPath = realpath($folder) . DIRECTORY_SEPARATOR . $file;
if (!is_dir($fullPath)) {
@unlink($fullPath);
} else {
$this->removeFile($fullPath);
}
}
}
rmdir($folder);
closedir($dh);
return true;
}
网友评论