简体   繁体   中英

Unable to fetch all text file names recursively from a directory

I'm trying to fetch all text files from a directory in a recursive manner (ie search all sub-folders):

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;
}

However, when I call getPathNames(".") , I get only the name of the first file.

It works fine if I take the return-value out of the function, and update a global variable instead:

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);
    }
}

Does anyone spot anything wrong with the first method?

好吧, concat不是就地突变,而是返回一个新数组,所以我会说你应该这样做

pathNames = pathNames.concat(getPathNames(pathName));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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