PHP 检查文件夹是否为空

Php 2020-04-19 阅读 248 评论 0

由于 PHP 的 rmdir 方法只能删除空文件夹,所以需要先判断文件夹是否为空。以下总结了2种检查文件夹是否为空的方法。

1. 使用 scandir 方法

scandir 方法会返回. 和 .. 2个元素,只需判断返回的列表长度是否为2。

private function isEmptyDir($dir)
{
    $res = scandir($dir);
    if ($res === false) {
        return false;
    }
    return count($res) == 2;
}

2. 使用 FilesystemIterator 类

FilesystemIterator 迭代器的 valid 方法,检查当前文件是否为有效。

private function isEmptyDir($dir)
{
    $iterator = new FilesystemIterator($dir);
    $isDirEmpty = !$iterator->valid();
    return $isDirEmpty;
}

慎用 glob 方法

注意:glob 方法有个缺陷,如果文件夹下面只存在一个以 . 点号开头的文件(也就是隐藏的文件),如 .codeglob($dir . "/*") 将返回空数组,进而造成错误的判断,不建议使用 glob 判断。

最后更新 2020-04-19