我有一个小函数,可以获取给定路径中具有指定扩展名的文件名。
这是代码:
getFileList(path, extension) {
let dir = fs.readdirSync( path );
return dir.filter( elm => elm.match(new RegExp(`.*\.(${extension})`, 'ig')));
}
我正在运行它并将结果添加到数组中。
像这样:
myArray = getFileList('the path', 'ext');
这工作正常,我现在需要使用文件名和文件内容将对象添加到数组中
例如:
myArray = []
getFileListAndContent('the path', 'ext'...);
结果示例:
myArray = [
{
filename: "filename1.ext",
content: "the content"
}
]
所以我需要它返回这样的东西(每个找到的文件):
{ filename: 'myfile1.doc', content: 'something here' }
如何更改函数以实现此目的?
最佳答案
循环遍历所有文件并一一读取其内容:
const fs = require('fs');
const path = require('path');
function getFileList(directory, extension) {
let dir = fs.readdirSync(directory);
let filelist = dir.filter( elm => elm.match(new RegExp(`.*\.(${extension})`, 'ig')));
return filelist.map(file => {
return {
filename: file,
content: fs.readFileSync(path.join(directory, file)).toString()
}
});
}
console.log(getFileList('path_here', 'doc'))
注意这是一个同步解决方案。
如果您有很长的文件列表,请考虑重构为异步格式:fs.readFile
关于javascript - Nodejs 更改获取文件列表的函数也获取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55165607/