PHP/Laravel 递归概述文件

问题描述 投票:0回答:2

我有递归迭代器概述,我获得了所有文件以及所有目录。我只想要文件的概述。 我有下面的代码:

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

 ?> 
php file laravel recursion iterator
2个回答
5
投票

您可以使用文件(Illuminate\Support\Facades\File)外观:

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.