在js中使用递归函数按扩展名对文件进行排序
Posted
技术标签:
【中文标题】在js中使用递归函数按扩展名对文件进行排序【英文标题】:Sort files by extension with recursive function in 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'))
【问题讨论】:
您能否提供可能的输入列表和预期结果列表的示例? 请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案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 模块,但也许这可以工作。
【讨论】:
以上是关于在js中使用递归函数按扩展名对文件进行排序的主要内容,如果未能解决你的问题,请参考以下文章