Javascript 在Node Js中逐个读取目录中的多个文件
我试图在一个文件夹中提供一组文件,它应该读取每个文件并返回正确唯一路径的指定信息”(这意味着/resource directory分别有f1.txt、f2.txt文件,如/resource/f1.txt) 单个文件的输出为: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 }' ] } 我们将要存储
{ 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
}
这将按文件的顺序给出结果
目的是逐个读取所有文件并将输出保存在变量中。
使用上述方法,您不是逐个读取文件,而是利用承诺的力量,允许它们并行运行