首頁 >web前端 >js教程 >如何在 Node.js 中有效率地逐行讀取大文本檔?

如何在 Node.js 中有效率地逐行讀取大文本檔?

Linda Hamilton
Linda Hamilton原創
2024-12-07 02:35:15933瀏覽

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