PHP: 递归且快速地列出文件夹中的所有文件
PHP: List all files in a folder recursively and fast
我正在寻找递归扫描目录以查找所有现有文件和文件夹的最快方法。
示例:
- images
-- image1.png
-- image2.png
-- thumbnails
--- thumb1.png
--- thumb2.png
- documents
-- test.pdf
应该return:
- images/image1.png
- images/image2.png
- images/thumbnails/thumb1.png
- images/thumbnails/thumb2.png
- documents/test.pdf
所以我将从:
开始
$filesandfolders = @scandir( $path );
foreach ($filesandfolders as $f){
if(is_dir($f)){
//this is a folder
} else {
//this is a file
}
}
但这是最快的方法吗?
您可以使用 RecursiveDirectoryIterator
- 但我怀疑,它比简单的递归函数更快。
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/path/to/folder'));
foreach ($iterator as $file) {
if ($file->isDir()) continue;
$path = $file->getPathname();
}
我正在寻找递归扫描目录以查找所有现有文件和文件夹的最快方法。
示例:
- images
-- image1.png
-- image2.png
-- thumbnails
--- thumb1.png
--- thumb2.png
- documents
-- test.pdf
应该return:
- images/image1.png
- images/image2.png
- images/thumbnails/thumb1.png
- images/thumbnails/thumb2.png
- documents/test.pdf
所以我将从:
开始$filesandfolders = @scandir( $path );
foreach ($filesandfolders as $f){
if(is_dir($f)){
//this is a folder
} else {
//this is a file
}
}
但这是最快的方法吗?
您可以使用 RecursiveDirectoryIterator
- 但我怀疑,它比简单的递归函数更快。
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/path/to/folder'));
foreach ($iterator as $file) {
if ($file->isDir()) continue;
$path = $file->getPathname();
}