CreateReadStream在块中创建一个额外的换行符分隔符?

时间:2016-06-08 14:58:41

标签: javascript node.js

我对节点的fs模块中的readStream有一个简单的问题。 这是简单的代码:

fs = require('fs');
readStream = fs.createReadStream('somefile.d');
 readStream.on('data', function(chunk) {
 console.log(chunk.toString());
});

'somefile.d'是:

a1
a2
a3
a4

问题: 为什么在输出结束时会有额外的换行符?我尝试了od -c来获得一个八进制转储,是的还有一个额外的换行符。这是由toString提出的吗? 更重要的是,为什么换行分隔的块?每行都会触发数据事件。我没有指定任何选项,也没有选项来读取由任何特定字符分隔的块。我知道有carrier模块可以解决这个问题。

任何解释都将不胜感激。



1 个答案:

答案 0 :(得分:4)

我不确定我是否完全理解,但如果您正在谈论程序的实际输出,那么看起来您的唯一输出似乎来自console.logconsole.log以行结尾终止其写入。如果你想在没有行终止符的情况下写入stdout,你可以这样做:

process.stdout.write(chunk)

应该按原样发送出去。如果你想要,你也可以直接将readstream传输到stdout:

readStream.pipe(process.stdout);