递归概述文件PHP/Laravel

cvxl0en2  于 11个月前  发布在  PHP
关注(0)|答案(2)|浏览(123)

我有递归迭代器的概述,我得到所有的文件,但也所有的目录的。我只想要一个文件的概述。我有下面的代码:

<?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;
    }
}

 ?>

字符串

j0pj023g

j0pj023g1#

可以使用File(Illuminate\Support\Facades\File)facade:

foreach (File::allFiles($root) as $file) {
        // $file->getFilename()
    }

字符串
API:https://laravel.com/api/5.2/Illuminate/Contracts/Filesystem/Filesystem.html

uqxowvwt

uqxowvwt2#

到目前为止,还没有Laravel特定的方法来以内存有效的方式重新配置目录。
PHP的RecursiveDirectoryIteratorRecursiveIteratorIterator的组合将工作:

$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提到的那样。

相关问题