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