gpt4 book ai didi

node.js - 异步写入文件和 Steam 写入文件有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-04 00:09:54 26 4
gpt4 key购买 nike

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

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

最佳答案

假设您正在下载一个文件,一个巨大的文件,1TB 文件,并且您想要将该文件写入您的文件系统。

您可以将整个文件下载到内存中的缓冲区中,然后使用 fs.appendFile()fs.writeFile() 将缓冲区下载到本地文件,或者至少尝试一下,你会耗尽内存。

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

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

readStream.pipe(writeStream);

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

这就是流抽象的一般原因,特别是 Node 中的抽象。

<小时/>
  1. http 模块支持这种方式的流式传输,以及大多数其他 HTTP 库,如 requestaxios,我已经省略了为了简洁起见,如何创建读取流的具体信息作为读者的练习

关于node.js - 异步写入文件和 Steam 写入文件有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50345919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com