Stream

简介: 【10月更文挑战第22天】

Node.js 中的 Stream(流)是一种处理流式数据的接口,它允许你按块处理数据,而不是一次性将所有数据加载到内存中。这对于处理大量数据或实时数据流非常有用。

Stream 类型

Node.js 提供了四种主要的流类型:

  1. Readable Streams(可读流):可以从中读取数据。
  2. Writable Streams(可写流):可以向其中写入数据。
  3. Duplex Streams(双工流):既可以读取数据也可以写入数据,例如 net.Socket(TCP 流)。
  4. Transform Streams(转换流):在写入数据后,对数据进行转换,然后从流中读取转换后的数据。

Stream 事件

所有 Stream 对象都是 EventEmitter 的实例,它们会触发以下事件:

  • data:当有数据可读时触发,返回数据块。
  • end:当没有更多的数据可读时触发,表示流的结束。
  • error:在接收和写入过程中发生错误时触发。
  • finish:当所有数据已被写入到底层系统时触发,通常用于可写流。

从流中读取数据

以下是一个示例,展示了如何从文件中读取数据:

// 引入 fs 模块
var fs = require("fs");

// 创建一个变量来存储读取的数据
var data = '';

// 创建可读流,读取 input.txt 文件
var readerStream = fs.createReadStream('input.txt');

// 设置编码为 utf8
readerStream.setEncoding('UTF8');

// 监听 'data' 事件,当有数据可读时触发
readerStream.on('data', function(chunk) {
   
   // 将数据块添加到 data 变量
   data += chunk;
});

// 监听 'end' 事件,当没有更多数据可读时触发
readerStream.on('end', function() {
   
   // 输出读取到的数据
   console.log(data);
});

// 监听 'error' 事件,当发生错误时触发
readerStream.on('error', function(err) {
   
   // 输出错误信息
   console.log(err.stack);
});

// 输出程序执行信息
console.log("程序执行完毕");

在这个示例中,我们首先引入了 fs 模块,然后创建了一个空字符串 data 来存储从文件中读取的数据。接着,我们使用 fs.createReadStream 方法创建了一个可读流,用于读取 input.txt 文件。

目录
相关文章
|
7月前
|
存储 Java API
Stream流
Stream流
70 1
|
6月前
Stream之flatMap
Stream之flatMap
|
6月前
|
API
Stream流知识
Stream流知识
40 0
|
6月前
|
存储 Java API
Java——Stream流(1/2):Stream流入门、Stream流的创建(认识Stream、体验Stream流、Stream流的使用步骤、获取Stream流的方法)
Java——Stream流(1/2):Stream流入门、Stream流的创建(认识Stream、体验Stream流、Stream流的使用步骤、获取Stream流的方法)
100 0
|
Java 测试技术 Maven
stream-query
stream-query
118 0
|
Java 数据处理
常用Stream流
常用Stream流
153 0
|
存储 SQL NoSQL
Stream流的介绍
Stream流的介绍
149 0
Stream流的介绍
|
SQL Java 程序员
Stream流的操作
Stream流的操作
76 0
|
SQL 分布式计算 安全