我现在可以使用async
方法(如fs.appendFile
)和流(如fs.createWriteStream
)来编写文件。
但是,如果流也是异步的,我们为什么还需要它们,并且可以为我们提供更好的功能呢?
答案 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中。
http
模块支持以这种方式进行流式传输,以及大多数其他HTTP库,如request
和axios
,我遗漏了如何创建读取的细节为简洁起见,将