【问题标题】:Sort files by extension with recursive function in js在js中使用递归函数按扩展名对文件进行排序
【发布时间】:2021-11-06 09:03:58
【问题描述】:

我有一个函数可以递归地获取文件夹中的所有文件,但我只想按几个特定的​​扩展名对它们进行排序,我知道我可以使用 glob,但是如何在节点中使用 fs 来做到这一点

const fs = require('fs');
function getFiles (dir, files_){
files_ = files_ || [];
var files = fs.readdirSync(dir);
for (var i in files){
    var name = dir + '/' + files[i];
    if (fs.statSync(name).isDirectory()){
        getFiles(name, files_);
    } else {
        files_.push(name);
    }
}
return files_;
}
console.log(getFiles('D:/sample'))

【问题讨论】:

  • 您能否提供可能的输入列表和预期结果列表的示例?
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: javascript node.js nodes fs


【解决方案1】:

您可以在将文件推送到 files_ 数组之前添加条件逻辑,然后使用字符串方法检查 files[i] 的最后 4 个元素是否匹配某个扩展名,如果匹配,则继续将该文件推送到文件_。

  const fs = require('fs');
  function getFiles (dir, files_) {
    files_ = files_ || [];
    var files = fs.readdirSync(dir);
    var parseThese = [".txt", ".pdf", ".csv"];
    
    for (var i in files) {
      var name = dir + '/' + files[i];
      var extension = "";

      if (fs.statSync(name).isDirectory()) {
        return getFiles(name, files_);
      } 

      extension = files[i].slice(-4);
      if (parseThese.includes(extension)) {
        return files_.push(name);
      }
    }
    return files_;
 }
 console.log(getFiles('D:/sample'))

它没有使用 FS 模块,但也许这可以工作。

【讨论】:

    猜你喜欢
    • 2010-10-01
    • 2023-04-06
    • 1970-01-01
    • 2015-12-30
    • 2015-04-07
    • 1970-01-01
    • 2023-04-11
    • 2021-06-22
    • 1970-01-01
    相关资源
    最近更新 更多