王新阳

wangxinyang

php遍历获取当前目录及子目录下所有文件

/**
 * SELF_FIRST 目录从浅到深返回
 * CHILD_FIRST 先处理子节点,目录从深到浅返回
 */
function getAllFilesWithSize() {
        $files = [];
        $iterator = new RecursiveIteratorIterator(
            new RecursiveDirectoryIterator($this->cacheBaseDir, FilesystemIterator::SKIP_DOTS),
            RecursiveIteratorIterator::CHILD_FIRST
        );
        foreach ($iterator as $SplFileInfo) {
            if ($SplFileInfo->isFile()) {
                $files[] = [
			'getRealPath' => $SplFileInfo->getRealPath(),
			'getPathname' => $SplFileInfo->getPathname(),
			'getExtension' => $SplFileInfo->getExtension(),
			'getFilename' => $SplFileInfo->getFilename(),
			'getSize' => $SplFileInfo->getSize(),
			'getType' => $SplFileInfo->getType(),
                ];
            }
        }
        
        return $files;
    }

参考:
PHP标准库 https://www.php.net/manual/zh/book.spl.php
递归目录迭代器 https://www.php.net/manual/zh/class.recursivedirectoryiterator.php

2025-12-27
2026-02-21 星期六 农历正月初五