我正在使用 Node 的 fs.WriteStream 将数据写入文件。我正在遍历一个对象数组并使用write()函数写入每个对象。
问题是我想知道一旦这个循环结束并且所有的write()调用都完成了,但我不能让它工作。
我尝试了一些解决方案,例如不使用流,但这会产生其他问题。我上次尝试的解决方案是检查循环是否是最后一项,如果是,则关闭、结束或销毁流。
这些都不起作用。该事件是在文件实际写入之前发出的。
下面是我的代码,我很感激我能得到的任何帮助。非常感谢。
async function writeFile(path, data) {
try {
const writeStream = fs.createWriteStream(path, {
flags: "w"
})
data.forEach((file, index) => {
writeStream.write(`${file.name}\n`, (err) => {
if(err) throw err
if(index === (data.length - 1)) writeStream.end(); //I attempted close() and destroy() too, none worked
})
})
writeStream.on("finish", () => {
console.log("All files were written.") //Currently being emmited before all is written.
})
} catch (err) {
throw (err)
}
}