PHP使用DirectoryIterator遍历指定目录下的所有文件

作者: 温新

分类: 【PHP基础】

阅读: 3411

时间: 2021-05-23 15:01:46

如果使用PHP遍历一个目录下的所有文件,会怎么做?传统的方法使用opendirreaddir等函数然后进行递归遍历。对于此,PHP有新的方案,那就是DirectoryIterator迭代器

DirectoryIterator迭代器

SPL(标准PHP库)中有一个DirectoryIterator。SPL中最主要的是Iterator迭代器接口,通过这个接口可以使对象用于foreach接口。DirectoryIterator类继承SplFileInfo且实现了IteratorTraversableSeekableIterator

使用它很容易,只需要传递一个目录路径即可,下面通过代码实现。

<?php
// 当前文件所有目录
$path = dirname(__FILE__);

$dirIterator = new DirectoryIterator($path);
foreach ($dirIterator as $fileinfo) {
	// 判断是否为目录
	if (!$fileinfo->isDir()) {
		// 输出文件信息
		echo $fileinfo->getFilename() . '--' . $fileinfo->getSize() . '<br>';
	}
}

是不是比递归简单太多了^_^

DirectoryIterator相关方法

DirectoryIterator关于案例可以参数官方介绍,这里简单做个记录。

方法名 说明
isDir() 判断当前DirectoryIterator item对象是否为目录
isDot() 判断当前DirectoryIterator item对象是否为 '.' 或 '..'
isFile() 判断当前DirectoryIterator item对象是否为有效文件
isLink() 判断当前DirectoryIterator item对象是否为链接
isReadable() 判断当前DirectoryIterator item对象是否可读
isWritable() 判断当前DirectoryIterator item对象是否可写
isExecutable() 判断当前DirectoryIterator item对象是否可执行
getATime() 获取当前DirectoryIterator item最后访问时间
getCTime() 获取当前DirectoryIterator item最后修改时间
getMTime() 获取当前DirectoryIterator item文件数据块最后写入时间
getBasename() 获取当前DirectoryIterator item名称
getFilename() 获取当前DirectoryIterator item文件名(含扩展名)
getPathname() 获取当前DirectoryIterator item路径名
getPath() 获取当前DirectoryIterator item路径名与文件名
getSize() 获取当前DirectoryIterator item大小
getType() 获取当前DirectoryIterator item类型

2020-05-24

请登录后再评论