node随笔-数据流Stream

一. 流(stream)在 Node.js 中是处理流数据的抽象接口(abstract interface)。 stream 模块提供了基础的 API 。使用这些 API 可以很容易地来构建实现流接口的对象。

Node.js 提供了多种流对象。 例如, HTTP 请求 和 process.stdout 就都是流的实例。

流可以是可读的、可写的,或是可读写的。所有的流都是 EventEmitter 的实例。

二. 流的类型

Readable 可读的流  例如 fs.createReadStream()

Writable  可写的流  例如 fs.createWriteStream()

Duplex 可读写的流 例如 例如 net.socket

Transform 在读写过程中可以修改和变换数据的 Duplex 流 例如 zlib.createDeflate(

三.缓冲

Writable 和 Readable流都会将数据存储到内部的缓冲器buffer中,这些缓冲器可以通过相应的writable._writableState.getBuffer() 或 readable._readableState.buffer 来获取。

缓冲器的大小取决于传递给流构造函数的highWaterMark 选项,对于普通的流,hignWaterMark选项指定了总共的字节数,对于工作在对象模式的流,hignWaterMark指定了对象的总数。

可读流的实现调用stream.push(chunk)方法时,数据被放到缓冲器中,如果流的消费者没有调用stream.read()方法,这些数据会始终存在于内部队列中,直到被消费。

四.可写流 Writable

可写流是对数据写入目的地的一种抽象

相关事件:

close事件将在流或其底层资源(比如一个文件关闭后触发),该事件触发后 流不在触发任何事件。

猜你喜欢

转载自www.cnblogs.com/xiaowang0808/p/9020650.html
今日推荐