在node.js上遍历文件路径时的深度优先搜索(DFS)

时间:2019-07-05 07:40:35

标签: javascript node.js depth-first-search

我创建了一个递归函数,它将遍历文件目录。我的问题是:

  • 实现用于遍历文件路径的递归函数会自动读取其父目录和子目录吗?我不明白为什么它在执行函数上的最后一个代码后仍然调用函数 _checkfile

function _chekcfile ..... console.info(aTempFiles); .....

详细信息

文件结构


|-:目录

>-:文件

|-- C:
    |-- Test
        |-- template
            |-- blank
                |-- config.json
                |-- webapp
                   >-- manifest.json
                   >-- index.html
                   >-- Component.js
                   |-- controller
                       >-- Home.controller.js
                   |-- css
                       >-- style.css
                   |-- i18n
                       >-- i18n.properties
                   |-- model
                       >-- models.js
                   |-- util
                       >-- BaseController.js
                   |-- view
                       >-- App.view.xml
                       >-- Home.view.xml

节点JS文件


const fs = require('fs');
const chalk = require('chalk');
const path = require('path');

// Initial
var staticPath = "C:/Test/template/blank";
// Call checkfile
_checkFile(staticPath);
console.info('--------------------------------------------------');

function _checkFile (staticPath, dirHist ="") {
    console.info(staticPath);
    var aFiles = _readPath(staticPath);
    try {
        aFiles.forEach((sFileOrDir, iIdx) => {
            if (fs.statSync(path.join(staticPath, sFileOrDir)).isDirectory()) {
                _checkFile(path.join(staticPath, sFileOrDir), dirHist ? `${dirHist}\\${sFileOrDir}` : sFileOrDir);
            } else {
                // File
                aTempFiles.push(path.join(dirHist, sFileOrDir));
            }
        });
    } catch(e) {
        console.info(chalk.red(e));
    }
    console.info(aTempFiles);
}

function _readPath (staticPath) {
    return fs.readdirSync(staticPath);
}

预期的控制台输出:


C:\Test\template\blank                                                
C:\Test\template\blank\webapp                                         
C:\Test\template\blank\webapp\controller                              
[ 'config.json',                                                      
  'webapp\\Component.js',                                             
  'webapp\\controller\\Home.controller.js' ]                          
C:\Test\template\blank\webapp\css                                     
[ 'config.json',                                                      
  'webapp\\Component.js',                                             
  'webapp\\controller\\Home.controller.js',                           
  'webapp\\css\\style.css' ]                                          
C:\Test\template\blank\webapp\i18n                                    
[ 'config.json',                                                      
  'webapp\\Component.js',                                             
  'webapp\\controller\\Home.controller.js',                           
  'webapp\\css\\style.css',                                           
  'webapp\\i18n\\i18n.properties' ]                                   
C:\Test\template\blank\webapp\model                                   
[ 'config.json',                                                      
  'webapp\\Component.js',                                             
  'webapp\\controller\\Home.controller.js',                           
  'webapp\\css\\style.css',                                           
  'webapp\\i18n\\i18n.properties',                                    
  'webapp\\index.html',                                               
  'webapp\\manifest.json',                                            
  'webapp\\model\\models.js' ]                                        
C:\Test\template\blank\webapp\util                                    
[ 'config.json',                                                      
  'webapp\\Component.js',                                             
  'webapp\\controller\\Home.controller.js',                           
  'webapp\\css\\style.css',                                           
  'webapp\\i18n\\i18n.properties',                                    
  'webapp\\index.html',                                               
  'webapp\\manifest.json',                                            
  'webapp\\model\\models.js',                                         
  'webapp\\util\\BaseController.js' ]                                 
C:\Test\template\blank\webapp\view                                    
[ 'config.json',                                                      
  'webapp\\Component.js',                                             
  'webapp\\controller\\Home.controller.js',                           
  'webapp\\css\\style.css',                                           
  'webapp\\i18n\\i18n.properties',                                    
  'webapp\\index.html',                                               
  'webapp\\manifest.json',                                            
  'webapp\\model\\models.js',                                         
  'webapp\\util\\BaseController.js',                                  
  'webapp\\view\\App.view.xml',                                       
  'webapp\\view\\Home.view.xml' ]                                     
[ 'config.json',                                                      
  'webapp\\Component.js',                                             
  'webapp\\controller\\Home.controller.js',                           
  'webapp\\css\\style.css',                                           
  'webapp\\i18n\\i18n.properties',                                    
  'webapp\\index.html',                                               
  'webapp\\manifest.json',                                            
  'webapp\\model\\models.js',                                         
  'webapp\\util\\BaseController.js',                                  
  'webapp\\view\\App.view.xml',                                       
  'webapp\\view\\Home.view.xml' ]                                     
[ 'config.json',                                                      
  'webapp\\Component.js',                                             
  'webapp\\controller\\Home.controller.js',                           
  'webapp\\css\\style.css',                                           
  'webapp\\i18n\\i18n.properties',                                    
  'webapp\\index.html',                                               
  'webapp\\manifest.json',                                            
  'webapp\\model\\models.js',                                         
  'webapp\\util\\BaseController.js',                                  
  'webapp\\view\\App.view.xml',                                       
  'webapp\\view\\Home.view.xml' ]                                     
--------------------------------------------------

0 个答案:

没有答案