繁体   English   中英

无法从目录中递归获取所有文本文件名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM