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

$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));

转载于:https://my.oschina.net/sakmon/blog/393934

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值