ホームページ > バックエンド開発 > PHPチュートリアル > PHP でファイルを含むディレクトリを効率的に削除するにはどうすればよいですか?

PHP でファイルを含むディレクトリを効率的に削除するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-16 19:26:13
オリジナル
492 人が閲覧しました

How Can I Efficiently Delete Directories Containing Files in PHP?

ファイルが含まれるディレクトリの削除: 総合ガイド

概要:

ディレクトリの削除は次のとおりです。ファイル管理における一般的なタスク。ただし、ファイルが含まれるディレクトリに遭遇すると、削除プロセスが妨げられる可能性があります。この記事では、ファイルの内容に関係なく、ディレクトリを削除するための 2 つの効率的な方法について説明します。

方法 1: 手動再帰

この方法では、ディレクトリ内のすべてのファイルとフォルダーを明示的に削除します。ディレクトリ自体を削除する前に、ターゲット ディレクトリを削除してください。次の関数は、このメソッドを示しています。

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);
}
ログイン後にコピー

メソッド 2: RecursiveIterator の使用 (PHP 5.2 )

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);
}
ログイン後にコピー

このメソッドRecursiveIterator がディレクトリ構造の走査とその内容の削除を効果的に処理するため、手動による再帰実装は必要ありません。

以上がPHP でファイルを含むディレクトリを効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート