一,为什么需要流?
当我们学习一个东西的时候,首先我们要知道为什么要学习?那我们为什么要使用流呢?在node中读取文件的方式有来两种,一个是利用fs模块,一个是利用流来读取。如果读取小文件,我们可以使用fs读取,fs读取文件的时候,是将文件一次性读取到本地内存。而如果读取一个大文件,一次性读取会占用大量内存,效率很低,这个时候需要用流来读取。流是将数据分割段,一段一段的读取,效率很高。
二,流的概念
流是一种抽象的接口,node中很多对象都对它进行了实现。
所有流的对象都是EventEmitter的实例,都实现了EventEmitter的接口。
也就是流具有事件的能力,可以通过发射事件来反馈流的状态。这样我们就可以注册监听流的事件,来达到我们的目的。也就是我们订阅了流的事件,这个事件触发时,流会通知我,然后我就可以做相应的操作了。
三,流的分类
Readable Stream :可读数据流
Writeable Stream :可写数据流
Duplex Stream :双向数据流,可以同时读和写
Transform Stream: 转换数据流,可读可写,同时可以转换(处理)数据
四,可读流介绍
可读流的两种模式
可读流有两种模式:flowing和paused
1)在流动模式下,可读流自动从系统底层读取数据,并通过EventEmitter接口的事件尽快
将数据提供给应用。
2)在暂停模式下,必须显示调用stream.read()方法来从流中读取数据片段。