异步和蒸汽写入文件有什么区别?

时间:2018-05-15 08:46:37

标签: node.js

我现在可以使用async方法(如fs.appendFile)和流(如fs.createWriteStream)来编写文件。

但是,如果流也是异步的,我们为什么还需要它们,并且可以为我们提供更好的功能呢?

1 个答案:

答案 0 :(得分:1)

假设您正在下载文件,大文件,1TB文件,并且您希望将该文件写入文件系统。

您可以将整个文件下载到内存中的缓冲区,然后将fs.appendFile()fs.writeFile()缓冲区下载到本地文件,或者至少尝试使用内存不足。< / p>

或者您可以为下载文件创建读取流,并将其传输到写入流以写入文件系统:

const readStream = magicReadStreamFromUrl/*[1]*/('https://example.com/large.txt');
const writeStream = fs.createWriteStream('large.txt');

readStream.pipe(writeStream);

这意味着文件以块的形式下载,并且这些块通过管道传送到writeStream(将它们写入磁盘),而不必自己将其存储在内存中。

这就是流式抽象的原因,特别是在Node中。

  1. http模块支持以这种方式进行流式传输,以及大多数其他HTTP库,如requestaxios,我遗漏了如何创建读取的细节为简洁起见,将作为练习添加到