https://nodejs.org/api/readline.html
提供此解决方案,用于逐行读取 CSV 等大文件:
const { createReadStream } = require('fs');
const { createInterface } = require('readline');
(async function processLineByLine() {
try {
const rl = createInterface({
input: createReadStream('big-file.txt'),
crlfDelay: Infinity
});
rl.on('line', (line) => {
// Process the line.
});
await once(rl, 'close');
console.log('File processed.');
} catch (err) {
console.error(err);
}
})();
但我不想从头到尾阅读整个文件,但其中的一部分是从第 1 行到第 10000、20000 到 30000 等。
基本上我希望能够为我的函数的给定运行设置一个“开始”和“结束”行。
这对readline
&可行fs.createReadStream
吗?如果没有,请建议替代方法。
PS:这是一个大文件(大约 1 GB)并将其加载到内存中会导致内存问题。