使用php检查dir是否为空的最佳方法

时间:2011-05-26 08:30:16

标签: php

有没有更好的方法来检查dir是否为空而不是解析它?

2 个答案:

答案 0 :(得分:8)

不要这么认为。我能想到的最短/最快的方法就是以下内容,这应该是我能看到的。

function dir_is_empty($path)
{
    $empty = true;
    $dir = opendir($path); 
    while($file = readdir($dir)) 
    {
        if($file != '.' && $file != '..')
        {
            $empty = false;
            break;
        }
    }
    closedir($dir);
    return $empty;
}

这应该只能通过最多3个文件。两个...以及可能接下来的任何内容。如果接下来有什么东西,它就不是空的,如果不是,那么它就是空的。

答案 1 :(得分:-1)

不是,但您可以尝试删除它。如果失败,它不是空的(或者你只是不能删除它;))

function dirIsEmpty ($dir) {
  return rmdir($dir) && mkdir($dir);
}

更新

看来,考虑到“没有解析”条件的答案并没有找到太多朋友;)

function dirIsEmpty ($dir) {
  return count(glob("$dir/**/*")) === 0:
}

请注意,这假定目录和每个子目录不包含任何隐藏文件(以单个.开头)。