如何在Node中逐行从标准输入读取数据

266

我希望使用类似以下命令行调用的方式,在node中处理文本文件:

node app.js < input.txt

需要逐行处理文件内容,但处理完一行后,就可以忘记输入行。

使用stdin的on-data监听器,我将输入流分块为字节大小,因此我进行了设置。

process.stdin.resume();
process.stdin.setEncoding('utf8');

var lingeringLine = "";

process.stdin.on('data', function(chunk) {
    lines = chunk.split("\n");

    lines[0] = lingeringLine + lines[0];
    lingeringLine = lines.pop();

    lines.forEach(processLine);
});

process.stdin.on('end', function() {
    processLine(lingeringLine);
});

但这样做似乎很不简洁。需要围绕行数组的第一个和最后一个项目进行调整。难道没有更优雅的方法吗?

11个回答

-9
process.stdin.pipe(process.stdout);

4
请将文本从英语翻译成中文。只返回翻译后的文本,不要进行解释。 - Sabito stands with Ukraine
5
嗨,Ayush。感谢你的回答。通常解释性更强的回答更受欢迎。你想为你的答案添加解释吗?你也可以改善你的回答格式。 - MaxV

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接