php 快速读取文件夹下文件列表

在读取某个文件夹下的内容的时候 以前是使用 opendir readdir结合while循环过滤 . ..当前文件夹和父文件夹来操作的。

代码如下:

然后偶然发现了有scandir函数 可以扫描文件夹下内容

不用再while循环读取了 代码如下:

这样得到的是文件夹下的目录和文件列表

然而大部分情况下 我们不需要文件夹目录只需要文件 就得用 is_dir或者is_file来判断

而且有时候比较明确加载某些特殊类型的文件 如.php  .ini等文件的话 可以直接这样

这样能迅速获取某个后缀名的文件列表 能够快速的找到你想要的文件了

后续更新(2020-05-21)

有时候我们需要指定文件夹路径以及多个文件后缀类型,比如我要所有的 png jpg pdf 文件,该怎么办呢?

可以scandir得到文件列表,或者while配合readdir读取文件列表(上面有例子),然后循环得到后缀名,然后进行判断(这是比较传统正统的思维方式 代码方便理解维护)

<?php
$list = scandir(".");
foreach ($list as $value) {
    // Get file extension. 获取文件后缀名 方法太多了 这里简单举个例子
    $ext = pathinfo($value)['extension'];
    if (in_array($ext, array('jpg', 'pdf', 'png'))) {
        //Do something 做你需要的业务逻辑
        var_dump($value);
    }
}

这里提供另外一种思路,使用glob迅速获取内容:

<?php
var_dump(glob('./*.{jpg,pdf,png}',GLOB_BRACE));

这种代码可以直接根据后缀名和文件路径进行读取判断过滤。

原文地址:https://www.cnblogs.com/lizhaoyao/p/6428469.html