首頁 > 後端開發 > php教程 > 如何在 PHP 中遞歸刪除目錄及其內容?

如何在 PHP 中遞歸刪除目錄及其內容?

Patricia Arquette
發布: 2024-12-03 20:31:10
原創
615 人瀏覽過

How Can I Recursively Delete Directories and Their Contents in PHP?

刪除目錄及其內容

嘗試使用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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板