在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中文網其他相關文章!