基于我已阅读here,我使用fs.createWriteStream
写一些JSON到一个文件中。我于是在脚本的开头的处理约50块的数据,我打开我的streamand然后用一个函数来传递它,有一些JSON,这是相当不错的写作一起。
const myStream = fs.createWriteStream(
path.join(RESULTS_DIR, `my-file.json`),
{
flags: 'a'
}
)
function appendJsonToFile(stream, jsonToAppend) {
return new Promise((resolve, reject) => {
try {
stream.write(JSON.stringify(jsonToAppend, null, 2)
resolve('STREAM_WRITE_SUCCESS')
} catch (streamError) {
reject('STREAM_WRITE_FAILURE', streamError)
}
})
}
appendJsonToFile(myStream, someJson)
但是,由于要写入的数据的每一块是对象的数组,结构我在文件看起来像这样最终得到:
[
{
"data": "test data 1",
},
{
"data": "test data 2",
}
][
{
"data": "test data 3",
},
{
"data": "test data 4",
}
]
如果文件始终格式化为你上面说的三件事情你需要做的是:
\n]
模式和r+
保存文件下面就来start
的链接。
现在,另一件事是4点使得这个相当低效和问题的整体思路,如果流应在此处使用。我认为这有一定道理,但这里的问题是,如果你需要的文件是可读的写操作之间 - 如果没有,那么你应该在中间使用createWriteStream options与文件之间和所有工作之后添加红晕完成(transform stream)你只需结束流。
您可以通过定义做到这一点,但我是一个框架调用beforeExit
这使得这些案件很容易的作者:
scramjet
您可以使用此方法同上,只是如果你愿意用普通节点流上这个工作本应轻移你在正确的方向。