zoukankan      html  css  js  c++  java
  • 目录遍历( 递归方式和队列方式 )

    目录遍历方式

    主要函数:opendir(), readdir(), closedir()

      //递归函数实现遍历指定文件下的目录与文件数量  
        function total( $dirname, &$dirnum, &$filenum ){  
            $dir=opendir($dirname);  
            while($filename=readdir($dir)){  
                if('.' == $filename OR '..' == $filename)continue; 
                $newfile=$dirname."/".$filename;  
           //判断是否是目录 
                if(is_dir($newfile)){  
                    //通过递归函数再遍历其子目录下的目录或文件  
                    $dirnum++;  
                    total($newfile,$dirnum,$filenum);  
                }else{  
                    $filenum++;  
                }  
            }  
            closedir($dir);  
        }  
            
        $dirnum=0;  
        $filenum=0;  
        total('/var/www/learnlaravel/app/models',$dirnum,$filenum);  
        echo "目录总数:".$dirnum."
    ";  
        echo "文件总数:".$filenum."
    ";   //遍历指定文件目录与文件数量结束

    队列方式遍历

    主要函数:dir()[ 返回一个 Directory 类实例 ], 用到Directory类方法read()。

    function  getfiles($path='.'){
        $queue=array($path);
    
        while (!empty($queue)) {
            $currentPath=array_shift($queue);
            $currentDir = dir($currentPath);
            while (false !== ($filePath = $currentDir->read())) {
               if( '.' == $filePath || '..' == $filePath ){
                       continue;
               }
               if(is_dir($currentPath.'/'.$filePath)){
                      array_push($queue, $currentPath.'/'.$filePath);
               }
               echo $currentPath.'/'.$filePath."
    ";
            }
            $currentDir->close();
        }
    
    }
    
    getfiles('d:/software');
  • 相关阅读:
    leetcode 70 Climbing Stairs
    leetcode 203 Remove Linked List Elements
    【HMM】
    【设计总结】
    【docker】导出导入容器
    【设计工具】样机图
    【设计细节】apple sound
    【产品分析】盒马生鲜 套路
    【喂到嘴经济】这个词有点意思
    【需求分类】KANO模型
  • 原文地址:https://www.cnblogs.com/leezhxing/p/4225737.html
Copyright © 2011-2022 走看看