我有递归迭代器概述,我获得了所有文件以及所有目录。我只想要文件的概述。 我有下面的代码:
<?php
$root = '/xampp/htdocs/systeembeheer/Storage/download/';
$iter = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($root, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST,
RecursiveIteratorIterator::CATCH_GET_CHILD // Ignore "Permission denied"
);
$paths = array($root);
foreach ($iter as $path => $dir) {
if ($dir->isDir()) {
$paths[] = $path;
}
}
?>
您可以使用文件(Illuminate\Support\Facades\File)外观:
foreach (File::allFiles($root) as $file) {
// $file->getFilename()
}
API:https://laravel.com/api/5.2/Illuminate/Contracts/Filesystem/Filesystem.html
没有 Laravel 特定的方法以内存有效的方式迭代目录。
RecursiveDirectoryIterator
和 RecursiveIteratorIterator
的组合将起作用:
$path = storage_path('some-path'); // example
$directoryIterator = new RecursiveDirectoryIterator($path);
$iteratorIterator = new RecursiveIteratorIterator($directoryIterator);
foreach ($iteratorIterator as $fileInfo) {
var_dump($fileInfo->getPathname());
}
如果你不关心内存,比如当你确定你的目录不包含很多文件时,你可以使用
File::allFiles($path)
,就像Winogronko提到的那样。