📜  遍历文本 nodejs 中的每一行 - Javascript(1)

📅  最后修改于: 2023-12-03 14:58:09.143000             🧑  作者: Mango

遍历文本 nodejs 中的每一行

在 node.js 中,我们经常需要读取文件并对其进行处理。这时候,我们需要遍历文件的每一行,以便对其进行操作。本文将介绍如何在 node.js 中遍历每一行文本。

读取文件

在 node.js 中,可以通过 fs 模块中的 readFilecreateReadStream 等方法读取文件。这里我们以 createReadStream 方法为例:

const fs = require('fs');

const readStream = fs.createReadStream('example.txt');

readStream.on('data', (chunk) => {
  console.log(chunk);
});

readStream.on('end', () => {
  console.log('File reading is completed');
});

本例中,我们使用 createReadStream 方法创建一个读取流,该方法会返回一个 EventEmitter 实例。然后,我们监听了 data 事件和 end 事件。当数据流中有数据时,data 事件会被触发,我们可以在回调函数中对其进行处理。当数据流读取完成时,end 事件会被触发。

拆分文件为行

读取到的文件内容可能是一整块数据,我们需要将其拆分为行并遍历每一行。这里我们利用 readline 模块中的 createInterface 方法完成拆分:

const fs = require('fs');
const readline = require('readline');

const readStream = fs.createReadStream('example.txt');
const rl = readline.createInterface({ input: readStream });

rl.on('line', (line) => {
  console.log(line);
});

rl.on('close', () => {
  console.log('File reading is completed');
});

本例中,我们使用 createInterface 方法创建一个 readline.Interface 实例。该方法也会返回一个 EventEmitter 实例。然后,我们监听了 line 事件和 close 事件。当遇到一行数据时,line 事件会被触发,我们可以在回调函数中对其进行处理。当数据流读取完成时,close 事件会被触发。

完整代码
const fs = require('fs');
const readline = require('readline');

const readStream = fs.createReadStream('example.txt');
const rl = readline.createInterface({ input: readStream });

rl.on('line', (line) => {
  console.log(line);
});

rl.on('close', () => {
  console.log('File reading is completed');
});

以上就是在 node.js 中遍历每一行文本的方法。