删除包含文件的目录
删除目录很容易,但是当目录包含文件时会发生什么?如果目录中有任何文件,rmdir() 函数将失败。要删除该目录,您必须首先删除它包含的所有文件。
有多种方法可以执行此操作。一种选择是使用递归函数来删除目录中的所有文件和文件夹,包括任何嵌套目录。下面是一个示例:
function deleteDir(string $dirPath): void { if (! is_dir($dirPath)) { throw new InvalidArgumentException("$dirPath must be a directory"); } if (substr($dirPath, strlen($dirPath) - 1, 1) != '/') { $dirPath .= '/'; } $files = glob($dirPath . '*', GLOB_MARK); foreach ($files as $file) { if (is_dir($file)) { deleteDir($file); } else { unlink($file); } } rmdir($dirPath); }
或者,如果您使用 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中文网其他相关文章!