使用 NodeJS 可读流实现 “行读取器”

本文介绍了如何利用NodeJS的可读流创建一个LineReader类,该类能够逐行读取文件内容并触发监听事件。核心逻辑在于readLineCall函数,它在读取过程中处理不同系统的换行符。通过监听数据和结束事件,确保完整读取所有行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述


阅读原文


前言

本文是对于 NodeJS 核心模块 fs 可读流 createReadeStream 的应用,实现 “行读取器”,功能为读取一个文档的内容,每读完一行触发一次监听的事件,并对这一行数据进行处理。


LineReader 类的创建

实现 “行读取器” 的整体思路是创建一个类的实例,然后在这个实例上监听一个事件,并开始读取文件,每次读完一行触发,我们这里将这个类命名为 LineReader,因为类需要监听事件,所以需要继承 EventEmitter

// 行读取器 LineReader 类
// 引入依赖
const EventEmitter = require("events");
const fs = require("fs");

// 行读取器的类,参数为读取文件的路径
class LineReader extends EventEmitter {
   
    contructor(path) {
   
        super();
        this.path = path; // 文件路径
        this._rs = fs.createReadStream(this.path); // 创建可读流
        this.current = null; // 存储每次读到的单个字节
        this.arr = []; // 存放文件每一行单个字节 Buffer 的数组
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值