PHP如何获取指定目录及其所有子目录下的最新文件
你可以直接用PHP原生提供的递归迭代器实现,不需要自己手写递归遍历逻辑,代码非常简洁:
// 定义要扫描的根目录 $rootPath = 'c:\myfolder'; $latestFilePath = ''; $latestModifyTime = 0; // 初始化递归目录迭代器,自动跳过.、..特殊目录 $directoryIterator = new RecursiveDirectoryIterator($rootPath, RecursiveDirectoryIterator::SKIP_DOTS); // 迭代所有层级的子目录内容 $iterator = new RecursiveIteratorIterator($directoryIterator); foreach ($iterator as $fileInfo) { // 仅比对文件,跳过子目录本身 if ($fileInfo->isFile()) { $currentMtime = $fileInfo->getMTime(); if ($currentMtime > $latestModifyTime) { $latestModifyTime = $currentMtime; $latestFilePath = $fileInfo->getPathname(); } } } if (!empty($latestFilePath)) { echo '整个目录树内的最新文件为:' . $latestFilePath; } else { echo '目标目录下不存在任何文件'; }
如果需要按文件创建时间查找最新文件,可对应修改时间获取方法:
- Windows系统:将
getMTime()替换为getCTime() - Linux系统且PHP版本 >= 8.0:将
getMTime()替换为getBirthTime()
内容的提问来源于stack exchange,提问作者Kevin87
相关产品推荐
相关产品推荐

