ファイルを含むディレクトリの削除
ディレクトリを削除するのは簡単ですが、ディレクトリにファイルが含まれている場合はどうなりますか?ディレクトリ内にファイルがある場合、rmdir() 関数は失敗します。ディレクトリを削除するには、まずディレクトリに含まれるすべてのファイルを削除する必要があります。
これを行うにはいくつかの方法があります。 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); }
また、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 中国語 Web サイトの他の関連記事を参照してください。