[英]Unable to fetch all text file names recursively from a directory
我正在尝试以递归方式从目录中获取所有文本文件(即搜索所有子文件夹):
let fs = require("fs");
function getPathNames(dirName) {
let pathNames = [];
for (let fileName of fs.readdirSync(dirName)) {
let pathName = dirName + "/" + fileName;
if (fs.statSync(pathName).isDirectory())
pathNames.concat(getPathNames(pathName));
else if (pathName.endsWith(".txt"))
pathNames.push(pathName);
}
return pathNames;
}
但是,当我调用getPathNames(".")
,我只得到第一个文件的名称。
如果我从函数中取出返回值,然后更新一个全局变量,它就可以正常工作:
let fs = require("fs");
let pathNames = [];
function getPathNames(dirName) {
for (let fileName of fs.readdirSync(dirName)) {
let pathName = dirName + "/" + fileName;
if (fs.statSync(pathName).isDirectory())
getPathNames(pathName);
else if (pathName.endsWith(".txt"))
pathNames.push(pathName);
}
}
有人发现第一种方法有什么问题吗?
好吧, concat
不是就地突变,而是返回一个新数组,所以我会说你应该这样做
pathNames = pathNames.concat(getPathNames(pathName));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.