如何使用SPL
,可能使用RecursiveDirectoryIterator
and检索完整的目录树RecursiveIteratorIterator
?
问问题
6027 次
2 回答
19
默认情况下,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;
}
}
于 2010-04-16T19:28:36.850 回答
3
你可以做任何你想做的事
foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $file)
{
/* @var $file SplFileInfo */
//...
}
于 2010-03-17T15:28:48.613 回答