有没有更好的方法来检查dir是否为空而不是解析它?
答案 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:
}
请注意,这假定目录和每个子目录不包含任何隐藏文件(以单个.
开头)。