Node.js 流
流是 Node.js 的基本概念之一。流是一种数据处理方法,用于将输入顺序地读取或写入输出。流用于以有效的方式处理读/写文件或交换信息。
官方 Node.js 文档将流定义为“流是在 Node.js 中处理流数据的抽象接口”流模块提供了实现流接口的 API。Node.js 中的流对象的例子可以是对 HTTP 服务器和进程的请求。stdout 都是流实例。简而言之,流是 Node.js 中的对象,它允许用户以连续的方式从源读取数据或将数据写入目标。
访问流:
const stream = require('stream');
注意:在处理大量数据时,streams 的强大之处在于,streams 实际上不是一次性将文件全部读入内存,而是读取数据块,处理其内容数据,而不是将其全部保存在内存中。
Streams 相对于其他数据处理方法的优势:
- 时间效率:我们不必等到整个文件传输完毕。我们一有数据就可以开始处理。
- 内存高效:在开始处理之前,我们不需要在内存中加载大量数据。
node . js 中的流类型:node . js 中有四种类型的流。
- 可写:我们可以向这些流中写入数据。示例: fs.createWriteStream()。
- 可读:我们可以从这些流中读取数据。例: fs.createReadStream()。
- 双工:既可写又可读的流。例: net.socket。
- 转换:可以在写入和读取数据时修改或转换数据的流。示例: zlib.createDeflate。
一些使用流的节点应用编程接口有:
- 净。插座()
- process.stdin()
- process.stdout()
- process.stderr()
- fs.createReadStream()
- fs.createWriteStream()
- net.connect()
- http.request()
- zlib.createGzip()函数
- zlib.createGunzip()
- zlib.createDeflate()
- zlib.createInflate()
实现可读流:我们将从 inStream 读取数据,并使用 process.stdout 将其回显到标准输出。
// Sample JavaScript Code for creating
// a Readable Stream
// Accessing streams
const { Readable } = require('stream');
// Reading the data
const inStream = new Readable({
read() { }
});
// Pushing the data to the stream
inStream.push('GeeksForGeeks : ');
inStream.push(
'A Computer Science portal for Geeks');
// Indicates that no more data is
// left in the stream
inStream.push(null);
// Echoing data to the standard output
inStream.pipe(process.stdout);
输出:
GeeksForGeeks : A Computer Science portal for Geeks
实现一个可写流:在 outStream 中,我们简单地将块记录为一个字符串。我们还调用回调函数来指示没有任何错误的成功。我们将从 inStream 中读取数据,并使用 process.stdout 将其回显到标准输出。
// Sample JavaScript Code for
// Writable Stream
// Accessing Streams
const { Writable } = require('stream');
// Whatever is passed in standard
// input is out streamed here.
const outStream = new Writable({
// The Write function takes three
// arguments
// Chunk is for Buffer
// Encoding is used in case we want
// to configure the stream differently
// In this sample code, Encoding is ignored
// callback is used to indicate
// successful execution
write(chunk, encoding, callback) {
console.log(chunk.toString());
callback();
}
});
// Echo the data to the standard output
process.stdin.pipe(outStream);
输出:
Hello Geeks
版权属于:月萌API www.moonapi.com,转载请注明出处