Readable :可以接收数据,但不能向其发送数据。当你将数据推送到可读流中时,它会被缓冲,直到消费者开始读取数据;
writable :可以发送数据,但不能从中接收;
Duplex :即可读也可写;
Tranform :与 Duplex 一样是可写又可读的,但它的输出与输入是相关联的。
如何创建一个可读流
这里只做简单介绍,具体见 stream module。
const Stream = require('stream')
const readableStream = new Stream.Readable()
readableStream._read = (size) => {
console.log('read', size)
}
利用 Stream 模块初始化一个可读流,然后向其中发送数据
readableStream.push('hi!')
readableStream.push('ho!')如何创建一个可写流
为了创建可写流,需要扩展了基本的 Writable 对象,并实现了它的 _write 方法。
const Stream = require('stream')
const writableStream = new Stream.Writable()实现 _write 方法:
writableStream._write = (chunk, encoding, next) => {
console.log(chunk.toString())
next()
}结合上述例子实现
利用 readableStream 读入数据,并输出到 writableStream
const Stream = require('stream')
const readableStream = new Stream.Readable()
readableStream._read = (size) => {
console.log('read', size)
}
const writableStream = new Stream.Writable()
writableStream._write = (chunk, encoding, next) => {
console.log('write', chunk.toString())
next()
}
readableStream.pipe(writableStream)
readableStream.push('hi!')
readableStream.push('ho!')
/*
log:
read 16384
write hi!
write ho!
*/









