刪除包含巢狀檔案的目錄
問:我嘗試使用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); }
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中文網其他相關文章!