7

我需要列出文件夹及其子文件夹中的所有文件(具有某些扩展名)。我使用了 RecursiveIteratorIterator,如@Matthew's great answer in PHP list all files in PHP list all files in directory 中所述。

  • 我将搜索的根设置为“..”,所有文件名都有一个前缀“../”。如何仅获取文件名?
  • 除了文件名之外,我如何获得其父文件夹名称?
  • ...以及如何获取文件名的完整路径?

最后一件事:显示文件树,或者可能所有没有子目录的目录,都是处理文件时可能想要做的事情的例子。您建议如何将此数据传递到客户端以及数据结构的外观如何?

4

3 回答 3

10

$filename在那个答案中实际上不是一个字符串。它是一个类型的对象,SplFileInfo可以像字符串一样使用,但它也提供了更详细的信息:

于 2013-03-18T03:00:01.837 回答
3

以此为基础:

$iter = new RecursiveDirectoryIterator('../');

foreach (new RecursiveIteratorIterator($iter) as $fileName => $fileInfo) {
   $fullPath = (string) $fileInfo;
}

每个都$fileInfo将返回一个SplFileInfo对象。除了许多其他方法之外,还可以轻松访问路径和文件名。

phpSplFileInfo Object
(
  [pathName:SplFileInfo:private] => ./t.php
  [fileName:SplFileInfo:private] => t.php
)

我可能弄错了,但是要访问父文件夹名称,除非您通过树记录它,否则最简单的方法是使用dirname并附../加到路径中。

于 2013-03-18T02:59:54.397 回答
1
<?php
    $iterator = new FilesystemIterator(dirname(__FILE__), FilesystemIterator::CURRENT_AS_PATHNAME);
    foreach ($iterator as $fileinfo) {
        echo $iterator->current()->getPathname() . "\n";
    }
 ?>
于 2014-04-09T09:13:29.977 回答