$dir="D:\\wamp\\www\\test";
function search($dir){
$files=array();
foreach (glob("{$dir}\\*") as $key => $file){
if(is_dir($file)){
$files=array_merge($files,search($file));
}else{
$files[]=$file;
}
}
return $files;
}
opendir,readdir方式: opendir() 函数打开一个目录句柄,可由 closedir(),readdir() 和 rewinddir() 使用。 若成功,则该函数返回一个目录流,否则返回 false 以及一个 error。可以通过在函数名前加上 "@" 来隐藏 error 的输出。 readdir() 函数返回由 opendir() 打开的目录句柄中的条目。 若成功,则该函数返回一个文件名,否则返回 false。
$dir="D:\\wamp\\www\\test";
function readir($dir){
$files=array();
if ($dh = opendir($dir)){
while(($file = readdir($dh)) !== false){
if($file=='.'||$file=='..') continue;
$filedir=$dir.'\\'.$file;
if (is_dir($filedir)){
$files=array_merge($files,readir($filedir));
}else{
$files[]=$filedir;
}
}
closedir($dh);
}
return $files;
}
使用RecursiveDirectoryIterator遍历文件夹,列出所有文件路径
$dir="D:\\wamp\\www\\test";
function get_files($dir) {
$files = array();
for (; $dir->valid(); $dir->next()) {
if ($dir->isDir() && !$dir->isDot()) {
if ($dir->haschildren()) {
$files = array_merge($files, get_files($dir->getChildren()));
};
}else if($dir->isFile()){
$files[] = $dir->getPathName();
}
}
return $files;
}
$dirIterator= new RecursiveDirectoryIterator($dir);
var_dump(get_files($dirIterator));