Node.js中的Stream模块是用来支持文件和网络操作的,它可以让你以流的方式来处理数据,从而提高性能。Stream模块提供了一些基础的API,你可以使用它们来构建高级的流式应用程序。
Stream的类型
Stream模块提供了4种不同类型的流:Readable、Writable、Duplex和Transform。
- Readable流是用来从数据源读取数据的,比如文件或网络连接。
- Writable流是用来向数据源写入数据的,比如文件或网络连接。
- Duplex流是既可以读取数据,又可以写入数据的流。
- Transform流是一种特殊的Duplex流,它可以在读取和写入数据时对数据进行转换。
创建Stream
要创建Stream,要引入Stream模块:
const Stream = require('stream');
你可以使用Stream模块提供的API来创建Stream:
const readableStream = new Stream.Readable();
const writableStream = new Stream.Writable();
const duplexStream = new Stream.Duplex();
const transformStream = new Stream.Transform();
读取Stream
要读取Stream,要监听readable事件,这个事件会在可读取的数据可用时触发:
readableStream.on('readable', () => {
let chunk;
while (null !== (chunk = readableStream.read())) {
console.log(`Received ${chunk.length} bytes of data.`);
}
});
在这个例子中,我们使用readableStream.read()方法来从流中读取数据,每次读取一个chunk,直到读取完所有的数据。
写入Stream
要写入Stream,要监听drain事件,这个事件会在可写入的数据可用时触发:
writableStream.on('drain', () => {
console.log('All the data has been written');
});
在这个例子中,我们使用writableStream.write()方法来向流中写入数据,每次写入一个chunk,直到写入完所有的数据。
转换Stream
要转换Stream,要监听data事件,这个事件会在可转换的数据可用时触发:
transformStream.on('data', (chunk) => {
console.log(`Received ${chunk.length} bytes of data.`);
});
在这个例子中,我们使用transformStream.transform()方法来对流中的数据进行转换,每次转换一个chunk,直到转换完所有的数据。
结论
Node.js中的Stream模块可以让你以流的方式来处理数据,它提供了4种不同类型的流,你可以使用它们来读取、写入和转换数据。