我对节点的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模块可以解决这个问题。
任何解释都将不胜感激。
〜
〜
〜
答案 0 :(得分:4)
我不确定我是否完全理解,但如果您正在谈论程序的实际输出,那么看起来您的唯一输出似乎来自console.log
。 console.log
以行结尾终止其写入。如果你想在没有行终止符的情况下写入stdout,你可以这样做:
process.stdout.write(chunk)
应该按原样发送出去。如果你想要,你也可以直接将readstream传输到stdout:
readStream.pipe(process.stdout);