Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Node Js中逐个读取目录中的多个文件_Javascript_Node.js_Promise_Readfile - Fatal编程技术网

Javascript 在Node Js中逐个读取目录中的多个文件

Javascript 在Node Js中逐个读取目录中的多个文件,javascript,node.js,promise,readfile,Javascript,Node.js,Promise,Readfile,我试图在一个文件夹中提供一组文件,它应该读取每个文件并返回正确唯一路径的指定信息”(这意味着/resource directory分别有f1.txt、f2.txt文件,如/resource/f1.txt) 单个文件的输出为: { url: 'account/43', status: '200', headers: [ 'content-type = application/text' ], body: [ '{ name: XYZ }' ] } 我们将要存储

我试图在一个文件夹中提供一组文件,它应该读取每个文件并返回正确唯一路径的指定信息”(这意味着/resource directory分别有f1.txt、f2.txt文件,如/resource/f1.txt)

单个文件的输出为:

{ url: 'account/43',    
  status: '200',    
  headers: [ 'content-type = application/text' ],    
  body: [ '{ name: XYZ }' ] }
我们将要存储的每个文件的url作为一个主要变量进行检查,如下代码适用于文件夹中的单个文件。这里的目的是逐个读取所有文件并将输出保存在一个变量中

const fs = require('fs')
const path = require('path')
const _ = require('lodash')

function parseFile(filePath) {
  let content
  let output = new Promise((resolve, reject) => {
    fs.readFile(filePath, function(err, data) {
    if (err) reject( err )
    content = data.toString().split(/(?:\r\n|\r|\n)/g).map(function(line) {
      return line.trim()
    }).filter(Boolean)
    resolve(processFile(content))
  })
})
  return output
}
if (require.main === module) {
  let p = parseFile( path.join(__dirname, '../resources/FileData1.txt') )
  p.then((results => {
    console.log(results.status)
  }))
}

任何建议都是值得的,谢谢!

问题是您只处理一个文件。首先,您需要检索所有文件,然后使用您的函数

步骤1-获取给定目录的所有文件。
步骤2-为每个文件创建承诺。
第3步-使用和
,然后使用将产生所有结果的回调

if (require.main === module) {
  let dir = path.join(__dirname, '../resources')
  let files = fs.readdirSync(dir) // gives all the files
  let promises = files.map(file => parseFile(path.join(dir, file))) // gives an array of promises for each file
  Promise.all(promises).then(console.log) // Uses Promise.all and resolves all supplied promises with their results. 
  // WIN
}
这将按
文件的顺序给出结果

目的是逐个读取所有文件并将输出保存在变量中。 使用上述方法,您不是逐个读取文件,而是利用承诺的力量,允许它们并行运行