本题探讨了在 Node.js 中一次一行高效读取大文件。虽然提供的 Quora 示例演示了 STDIN 输入的这一点,但转换为基于文件的方法需要仔细考虑。
尝试使用 fs.open() 和 process.stdin 读取行将失败,因为 fs.open () 不提供像 process.stdin 这样的流接口。为了解决这个问题,我们可以利用 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 // Handle CR LF as a single line break }); for await (const line of rl) { console.log(`Line from file: ${line}`); } } processLineByLine();
或者,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中文网其他相关文章!