您的位置:首页 > 编程语言 > PHP开发

PHP遍历文件夹下所有文件,几种方式glob与opendir,RecursiveDirectoryIterator

2015-03-31 00:00 645 查看
glob方式: glob() 函数返回匹配指定模式的文件名或目录。 该函数返回一个包含有匹配文件 / 目录的数组。如果出错返回 false。
$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));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  glob opendir readdir