【Node】Node.js数据流、实现

1 什么是数据流?

  • “数据流”(stream)是处理系统缓存的一种方式。
  • 操作系统采用数据块(chunk)的方式读取数据,每收到一次数据,就存入缓存。
  • 数据读写可以看作是事件模式(Event)的特例,不断发送的数据块好比一个个的事件。读数据是read事件,写数据是write事件,而数据块是事件附带的信息。Node 为这类情况提供了一个特殊接口Stream

Node应用程序缓存的处理方式:

  • 等到所有数据接收完毕,一次性从缓存读取,这就是传统的读取文件的方式。这种方式先将数据全部读入内存,然后处理,优点是符合直觉,流程非常自然,缺点是如果遇到大文件,要花很长时间,才能进入数据处理的步骤。
  • 采用“数据流”的方式,收到一块数据,就读取一块,即在数据还没有接收完成时,就开始处理它。这种方式每次只读入数据的一小块,像“流水”一样,每当系统读入了一小块数据,就会触发一个事件,发出“新数据块”的信号。应用程序只要监听这个事件,就能掌握数据读取的进展,做出相应处理,这样就提高了程序的性能。

2 数据流

流是可以从一个源读取或写入数据到连续的目标对象。

在Node.js,有四种类型的数据流。

  • Readable - 其是用于读操作。
  • Writable - 用在写操作。
  • Duplex - 其可以用于读取和写入操作。
  • Transform - 输出基于输入的地方进行计算的一种双相流。

每种类型的流是一个EventEmitter实例,并抛出的不同的事件。

常用的事件有:

  • data - 当有数据可读时触发。
  • end - 没有更多的数据可读时触发。
  • error - 在接收和写入过程中发生错误时触发。
  • finish - 所有数据已被写入到底层系统时触发。

从流中读取:fs模块的createReadStream()方法,就可以创建一个读取数据的数据流。

var fs = require("fs");
var data = '';

// 建立一个输入流
var readerStream = fs.createReadStream('./input.txt');
// 设置字符集. 
readerStream.setEncoding('UTF8');
// 绑定流事件 --> data, end, and error
readerStream.on('data', 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南栀~zmt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值