在nodejs的文件夹下按扩展名* .html查找文件

我想使用nodejs在src文件夹及其所有子文件夹中找到所有* .html文件。最好的方法是什么?

var folder = '/project1/src';

var extension = 'html';

var cb = function(err, results) {

// results is an array of the files with path relative to the folder

console.log(results);

}

// This function is what I am looking for. It has to recursively traverse all sub folders.

findFiles(folder, extension, cb);

我认为很多开发人员都应该拥有出色且经过测试的解决方案,使用它比自己编写一个更好。

回答:

node.js,递归简单函数:

var path = require('path'), fs=require('fs');

function fromDir(startPath,filter){

//console.log('Starting from dir '+startPath+'/');

if (!fs.existsSync(startPath)){

console.log("no dir ",startPath);

return;

}

var files=fs.readdirSync(startPath);

for(var i=0;i<files.length;i++){

var filename=path.join(startPath,files[i]);

var stat = fs.lstatSync(filename);

if (stat.isDirectory()){

fromDir(filename,filter); //recurse

}

else if (filename.indexOf(filter)>=0) {

console.log('-- found: ',filename);

};

};

};

fromDir('../LiteScript','.html');

如果想花哨的话,添加RegExp,并添加一个回调使其通用。

var path = require('path'), fs=require('fs');

function fromDir(startPath,filter,callback){

//console.log('Starting from dir '+startPath+'/');

if (!fs.existsSync(startPath)){

console.log("no dir ",startPath);

return;

}

var files=fs.readdirSync(startPath);

for(var i=0;i<files.length;i++){

var filename=path.join(startPath,files[i]);

var stat = fs.lstatSync(filename);

if (stat.isDirectory()){

fromDir(filename,filter,callback); //recurse

}

else if (filter.test(filename)) callback(filename);

};

};

fromDir('../LiteScript',/\.html$/,function(filename){

console.log('-- found: ',filename);

});

以上是 在nodejs的文件夹下按扩展名* .html查找文件 的全部内容, 来源链接: utcz.com/qa/407829.html

回到顶部