默认情况下,RecursiveIteratorIterator
将LEAVES_ONLY
用于的第二个参数__construct
。这意味着它将仅返回文件。如果要包括文件和 目录(至少这是我认为的 完整 目录树),则必须执行以下操作:
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($path),
RecursiveIteratorIterator::SELF_FIRST
);
然后您就可以foreach
结束它。如果要返回目录树而不是输出它,则可以将其存储在数组中,例如
foreach ($iterator as $fileObject) {
$files[] = $fileObject;
// or if you only want the filenames
$files[] = $fileObject->getPathname();
}
您还可以通过执行以下操作来创建$fileObjects
没有的数组foreach
:
$files[] = iterator_to_array($iterator);
如果只想返回目录,foreach
则$iterator
可以这样:
foreach ($iterator as $fileObject) {
if ($fileObject->isDir()) {
$files[] = $fileObject;
}
}