使用RecursiveIteratorIterator列出文件夹中的文件很棒。我也可以获得父路径和完整路径吗?

时间:2013-03-18 02:51:37

标签: php file spl

我需要在文件夹及其子文件夹中列出所有文件(具有特定扩展名)。我使用了RecursiveIteratorIterator,如@Matthew在PHP list all files in directory中给出的最佳答案所述。

  • 我将搜索的根目录设置为“..”,所有文件名的前缀为“../”。我怎样才能获得文件名?
  • 除文件名外,如何获取其父文件夹名称?
  • ...我怎样才能获得文件名的完整路径?

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

3 个答案:

答案 0 :(得分:8)

该答案中的

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

答案 1 :(得分: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并将../附加到路径。

答案 2 :(得分:1)

<?php
    $iterator = new FilesystemIterator(dirname(__FILE__), FilesystemIterator::CURRENT_AS_PATHNAME);
    foreach ($iterator as $fileinfo) {
        echo $iterator->current()->getPathname() . "\n";
    }
 ?>