删除目录及其内容
尝试使用 rmdir() 删除目录时,由于目录中存在文件而遇到错误,这是一种错误常见问题。幸运的是,有几种方法可以规避此限制:
方法一:递归删除
在删除目标文件夹之前,递归删除其所有文件和子文件夹。这是一个示例实现:
function deleteDir(string $dirPath): void { if (!is_dir($dirPath)) { throw new InvalidArgumentException("'$dirPath' must be a directory"); } $dirPath .= '/'; $files = glob($dirPath . '*', GLOB_MARK); foreach ($files as $file) { if (is_dir($file)) { deleteDir($file); } else { unlink($file); } } rmdir($dirPath); }
方法 2:RecursiveIterator (PHP 5.2 )
利用 RecursiveIterator,您可以简化递归删除过程:
function removeDir(string $dir): void { $it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS); $files = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); foreach($files as $file) { if ($file->isDir()){ rmdir($file->getPathname()); } else { unlink($file->getPathname()); } } rmdir($dir); }
通过使用这些方法,可以有效删除目录及其嵌入文件。
以上是如何在 PHP 中递归删除目录及其内容?的详细内容。更多信息请关注PHP中文网其他相关文章!