阅读原文
前言
本文是对于 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 的数组