1 回答

TA贡献1891条经验 获得超3个赞
一种更简单的方法,也使用更少的内存并并行化写入(在块到达时写入块)并且应该更快一点,那就是将流直接通过管道传输到输出文件。
readStream.pipe(fs.createWriteStream("test.jpg"));
readStream.on('close', () => {
console.log("all done now");
});
或者,通过更好的错误处理,可以捕获两个流上的错误并告诉您一切何时完成:
const { pipeline } = require('stream');
pipeline(readStream, fs.createWriteStream("test.jpg"), err => {
if (err) {
console.log(err);
} else {
console.log("all done");
}
});
或者,使用 Promise 和pipeline():
const pipeline = util.promisify(require('stream').pipeline);
pipeline(readStream, fs.createWriteStream("test.jpg")).then(() => {
console.log("all done");
}).catch(err => {
console.log(err);
});
添加回答
举报