
阅读原文
前言
本文是对于 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 = []; // 存放文件每一行单个字节 Buffe

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

被折叠的 条评论
为什么被折叠?



