我需要在文件夹及其子文件夹中列出所有文件(具有特定扩展名)。我使用了RecursiveIteratorIterator,如@Matthew在PHP list all files in directory中给出的最佳答案所述。
最后一件事:显示文件树,或者所有没有子目录的目录,都是处理文件时可能想要做的事情的例子。您如何建议将此数据传递给客户端以及数据结构如何?
答案 0 :(得分:8)
$filename
实际上不是字符串。它是SplFileInfo
类型的对象,可以像字符串一样使用,但它也提供了更详细的信息:
SplFileInfo::getFilename()
- 文件名。SplFileInfo::getPathname()
- 文件路径SplFileInfo::getPathInfo()
- 路径的SplFileInfo对象SplFileInfo::getRealPath()
- 规范化的绝对路径名;有关详细信息,请参阅realpath()
,以及与路径名,答案 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";
}
?>