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

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

Susan Sarandon
Susan Sarandon原创
2024-11-28 20:09:11457浏览

How to Efficiently Read Large Files Line by Line in Node.js?

在 Node.js 中逐行读取文件

本题探讨了在 Node.js 中一次一行高效读取大文件。虽然提供的 Quora 示例演示了 STDIN 输入的这一点,但转换为基于文件的方法需要仔细考虑。

尝试使用 fs.open() 和 process.stdin 读取行将失败,因为 fs.open () 不提供像 process.stdin 这样的流接口。为了解决这个问题,我们可以利用 Node.js v0.12 中引入的 readline 核心模块。

使用 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 // Handle CR LF as a single line break
  });

  for await (const line of rl) {
    console.log(`Line from file: ${line}`);
  }
}

processLineByLine();

使用 readline 的替代语法

或者,readline 模块也可以以同步方式使用:

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

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

lineReader.on('close', () => {
  console.log('all done');
});

在此示例中, lineReader 为文件中的每一行发出“line”事件,并在所有行都被读取后发出“close”事件

注意:Node.js 官方文档现在包含一个与上面类似的示例。

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

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