javascript - Nodejs 更改获取文件列表的函数也获取内容

标签 javascript node.js

我有一个小函数,可以获取给定路径中具有指定扩展名的文件名。

这是代码:

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/

相关文章:

node.js - Lambda 中的 SES.sendEmail 未调用 Promise

javascript - Promised 请求在解析时不会返回正确的结果

javascript - jquery onclick 穿透到父元素

javascript - 在外部按钮上触发一个 div/<a> 点击光滑的 slider

javascript - jQuery 绑定(bind)和 JavaScript event.stopPropagation()

javascript - Javascript v8 引擎和 Web API

node.js - 安装express时出错

node.js - Heroku Autoscale 与 Node.js

javascript - 如何将两个 div 添加到 jQuery UI 的对话框小部件中

javascript - 如何按类搜索元素并在 Javascript 中检索标题属性(greasemonkey)