Get all files recursively in directories NodejS

前端 未结 10 1273
暖寄归人
暖寄归人 2020-12-14 07:15

I have a little problem with my function. I would like to get all files in many directories. Currently, I can retrieve the files in the file passed in parameters. I would li

10条回答
  •  感动是毒
    2020-12-14 07:34

    You can use loop through all the files and directories of the root folder, if it's a directory, then get inside it and repeat the process. Consider the code below:

    const fs = require('fs');
    const path = require('path');
    
    const target = './'; // choose the directory to target
    var result = []
    var filePaths = []
    var tempFolder = []
    const targetPath = fs.readdirSync(target);
    
    
    
    
    function hit(mainPath = targetPath) {
    
      mainPath.forEach((file) => {
    
        let check = fs.statSync(file);
    
        if (!check.isDirectory()) {
          filePaths.push(file)
        }
        else {
          if (file[0] != '.') {
            tempFolder.push(file)
          }
        }
      });
    
      // get files from folder
      if (tempFolder.length > 0) {
        tempFolder.forEach((dir) => {
          getFiles(dir)
        })
      } 
       // filePaths contains path to every file
    
    }
    
    
    
    
    function getFiles(dir) {
    
      var paths = fs.readdirSync(dir);
      var files = [];
    
      paths.forEach(function (file) {
        var fullPath = dir + '/' + file;
        files.push(fullPath);
      });
    
      files.forEach((tempFile) => {
        let check = fs.statSync(tempFile);
    
        if (check.isDirectory()) {
          getFiles(tempFile)
        } else {
          filePaths.push(tempFile)
        }
      })
    }
    
    
    
    hit(); // main function
    

提交回复
热议问题