php 获取指定文件下所有文件

scandir

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18


function ($path)
{
foreach (scandir($path) as $file) {
if ($file == '.' || $file == '..') {
continue;
}

if (is_dir($file)) {
getFiles($path.'/'.$file);
} else {
echo $path.'/'.$file.PHP_EOL;
}
}
}

getFiles(__DIR__);

glob

1
2
3
4
5
6
7
8
9
10
11
12
13

function ($path)
{
foreach (glob($path) as $file) {
if (is_dir($file)) {
getFiles($file.'/*');
} else {
echo $file.PHP_EOL;
}
}
}

getFiles(__DIR__);

readdir

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

function ($path)
{
echo $path;
$handle = opendir($path);
while (false !== ($file = readdir($handle))) {
if ($file == "." || $file == "..") {
continue;
}

if (is_dir($file)) {
getFiles($path.'/'.$file);
}

echo $path.'/'.$file.PHP_EOL;
}

closedir($handle);
}

getFiles(__DIR__);

迭代器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

function ($path)
{
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));

foreach ($iterator as $file => $fileInfo) {
$name = $fileInfo->getFilename();
if ($name == '.' || $name == '..') {
continue;
}

echo $name.PHP_EOL;
}
}

getFiles(__DIR__);