Javascript CreateReadStream在块中创建额外的换行分隔符?
我有一个关于节点fs模块中readStream的简单问题。 下面是简单的代码:Javascript CreateReadStream在块中创建额外的换行分隔符?,javascript,node.js,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来获得
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放的吗?
更重要的是,为什么块由换行符分隔?每行都会触发数据事件。我没有指定任何选项,也没有读取由任何特定字符分隔的数据块的选项。例如,我知道有一个模块可以解决这个问题
如有任何解释,将不胜感激
~~
~我不确定我是否完全理解,但是如果你说的是程序的实际输出,就像你写的那样,看起来你唯一的输出来自
控制台.log
console.log
以行尾结束写入。如果要在不使用行终止符的情况下写入标准输出,可以执行以下操作:
process.stdout.write(块)
应该按原样发送。如果您想:
readStream.pipe(process.stdout)代码>完全解释了第一部分。我接受你的答案,因为我错过了关于console.log在结尾处发出换行符的简单要点。但这并不能解释为什么读块,一次读一行,我的意思是用换行符分隔。在节点的流模块中并没有这样的块定义,也并没有指定不同的分隔符。在这种情况下,我理解我在查询中链接到的“承运人”模块的效用。如果您能解释一下,我也会很感激的……不,恐怕这个块是一些字节数,不是分隔的。我没有其他解释了,谢谢。我认为,如果没有指定大小,它会分块,直到看到换行符。我猜。。。