删除包含文件的目录?我想知道,删除目录中包含所有文件的最简单方法是什么?我正在使用rmdir(PATH . '/' . $value);删除文件夹,但是,如果其中有文件,我根本无法删除它。
3 回答
吃鸡游戏
TA贡献1829条经验 获得超7个赞
现在至少有两种选择。
在删除文件夹之前,删除它的所有文件和文件夹(这意味着递归!)。这是一个例子:
public static function deleteDir($dirPath) { 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)) { self::deleteDir($file); } else { unlink($file); } } rmdir($dirPath);}
如果你使用的是5.2+,你可以使用RecursiveIterator来完成它而不需要自己进行递归:
$dir = 'samples' . DIRECTORY_SEPARATOR . 'sampledirtree';$it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);$files = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST);foreach($files as $file) { if ($file->isDir()){ rmdir($file->getRealPath()); } else { unlink($file->getRealPath()); }}rmdir($dir);
MMMHUHU
TA贡献1834条经验 获得超8个赞
我通常用它来删除文件夹中的所有文件:
array_map('unlink', glob("$dirname/*.*"));
然后你就可以做到
rmdir($dirname);
- 3 回答
- 0 关注
- 383 浏览
添加回答
举报
0/150
提交
取消