>백엔드 개발 >PHP 튜토리얼 >PHP에서 디렉토리와 해당 내용을 어떻게 반복적으로 삭제할 수 있습니까?

PHP에서 디렉토리와 해당 내용을 어떻게 반복적으로 삭제할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-03 20:31:10627검색

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

디렉터리 내용과 함께 삭제

rmdir()을 사용하여 디렉터리를 제거하려고 할 때, 그 안에 있는 기존 파일로 인해 오류가 발생합니다. 일반적인 문제. 다행히도 이 제한을 피할 수 있는 여러 가지 방법이 있습니다.

방법 1: 재귀 삭제

대상 폴더를 삭제하기 전에 모든 파일과 하위 폴더를 재귀적으로 제거하세요. 다음은 샘플 구현입니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.