RecursiveDirectoryIdeator,用于列出目录



我想使用RecursiveDirectoryTerator以递归方式列出文件目录。下面是我的代码。

$rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(".", RecursiveDirectoryIterator::SKIP_DOTS));
foreach ($rii as $file){
if ($file->isDir()) {
echo "D ".$file->getPathName();
} else {
echo "F ".$file->getPathName();
}
echo "<br>n";
}

问题是它根本不返回目录。仅列出文件。当我省略SKIP_DOTS标志时,我确实得到了目录,但形式是dir/.dir/..,这显然不是我想要的。

现在我当然可以自己去掉拖尾点,但我想知道是否有我不知道的更好的内置方法?

$rdi = new RecursiveDirectoryIterator('.', RecursiveDirectoryIterator::KEY_AS_PATHNAME | RecursiveDirectoryIterator::SKIP_DOTS);
foreach (new RecursiveIteratorIterator($rdi, RecursiveIteratorIterator::SELF_FIRST) as $file => $info) {
echo $file."n";
}

示例文件/目录结构

.
|-- a
|   `-- x
|       |-- hbye.txt
|       `-- hello.txt
|-- b
|   `-- a
`-- script.php
4 directories, 3 files

脚本输出:

./a
./a/x
./a/x/hbye.txt
./a/x/hello.txt
./script.php
./b
./b/a

最新更新