我想用 Node.js 逐行处理一个大文件。它的大小为 100MB,有 500,000 行。我找到了这个解决方案来读取输入文件中的行
javascript - node.js:将文本文件读入数组。(每一行都是数组中的一个项目。) - VoidCC
现在是关于将每一行写入一个新的输出文件,所以我尝试
function readLines(input, func)
{
var remaining = "";
input.on("data", function(data)
{
remaining += data;
var index = remaining.indexOf("\n");
var last = 0;
while (index > -1)
{
var line = remaining.substring(last, index);
last = index + 1;
func(line);
index = remaining.indexOf("\n", last);
}
remaining = remaining.substring(last);
});
input.on("end", function()
{
if (remaining.length > 0)
{
func(remaining);
}
});
}
function write(data)
{
var written = output.write(data);
}
var fs = require("fs");
var input = fs.createReadStream("input.txt");
var output = fs.createWriteStream("output.txt", {flags: "w"});
readLines(input, write);
但是脚本真的很慢,完全处理输入文件需要1个多小时,并且消耗大量CPU和RAM(CPU数量为25,内存使用量高达200MB)。那么有人可以告诉我是否有任何方法可以优化它吗?