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));
这种代码可以直接根据后缀名和文件路径进行读取判断过滤。