我希望使用类似以下命令行调用的方式,在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);
});
但这样做似乎很不简洁。需要围绕行数组的第一个和最后一个项目进行调整。难道没有更优雅的方法吗?
process.stdout
更改为不同的可写流 - 这可能很简单,例如output: new require('stream').Writable()
。 - Jeff Sissonnode app.js < input.txt > output.txt
一样使用。 - Matt R. Wilsonterminal: false
传递给createInterface
方法,它可以解决这个问题。 - jasoncrawford