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
MIP.watch('startSearch', function (newVal, oldVal) { if(newVal) { var keyword = MIP.getData('keyword'); console.log(keyword); // 替换当前历史记录,新增 MIP.viewer.open('/s/' + keyword, {replace: true}); setTimeout(function () { MIP.setData({startSearch: false}) }, 1000); } }); MIP.watch('goHome', function (newVal, oldVal) { MIP.viewer.open('/', {replace: false}); });