首页 >web前端 >js教程 >如何在 Node.js 中高效地逐行读取大文本文件?

如何在 Node.js 中高效地逐行读取大文本文件?

Linda Hamilton
Linda Hamilton原创
2024-12-07 02:35:15931浏览

How Can I Efficiently Read a Large Text File Line by Line in Node.js?

在 Node.js 中逐行读取文本文件

在 Node.js 中一次一行读取大型文本文件可能是处理大量数据集的关键操作。虽然您在 Quora 中提到的问题解决了从 STDIN 读取的问题,但本文的重点是将这个概念扩展到从文本文件读取。

涉及 fs.open 的初始方法作为基础。缺少的步骤是利用 Lazy 模块从打开的文件描述符中执行逐行读取。然而,从 Node.js v0.12 开始,有一个更强大的解决方案,使用内置的 readline 核心模块。

让我们探索两种使用 readline 的方法:

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

async function processLineByLine() {
  const fileStream = fs.createReadStream('input.txt');

  const rl = readline.createInterface({
    input: fileStream,
    crlfDelay: Infinity
  });
  // Note: we use the crlfDelay option to recognize all instances of CR LF
  // ('\r\n') in input.txt as a single line break.

  for await (const line of rl) {
    // Each line in input.txt will be successively available here as `line`.
    console.log(`Line from file: ${line}`);
  }
}

processLineByLine();

或者,您可以使用:

var lineReader = require('readline').createInterface({
  input: require('fs').createReadStream('file.in')
});

lineReader.on('line', function (line) {
  console.log('Line from file:', line);
});

lineReader.on('close', function () {
    console.log('all done, son');
});

两种方法都利用 readline 模块一次有效地从文本文件中读取一行。即使最后没有换行符,最后一行也能正确读取(从 Node v0.12 或更高版本开始)。

以上是如何在 Node.js 中高效地逐行读取大文本文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn