为了账号安全,请及时绑定邮箱和手机立即绑定

删除包含文件的目录?

删除包含文件的目录?

PHP
紫衣仙女 2019-07-29 16:48:46
删除包含文件的目录?我想知道,删除目录中包含所有文件的最简单方法是什么?我正在使用rmdir(PATH . '/' . $value);删除文件夹,但是,如果其中有文件,我根本无法删除它。
查看完整描述

3 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

现在至少有两种选择。

  1. 在删除文件夹之前,删除它的所有文件和文件夹(这意味着递归!)。这是一个例子:

    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);}
  2. 如果你使用的是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);


查看完整回答
反对 回复 2019-07-29
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

我通常用它来删除文件夹中的所有文件:

array_map('unlink', glob("$dirname/*.*"));

然后你就可以做到

rmdir($dirname);


查看完整回答
反对 回复 2019-07-29
?
哔哔one

TA贡献1854条经验 获得超8个赞

删除包含所有文件的目录的最简单方法是什么?

system("rm -rf ".escapeshellarg($dir));


查看完整回答
反对 回复 2019-07-29
  • 3 回答
  • 0 关注
  • 383 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信