Это потому, что ваш код для подсчета пробелов является асин c кодом. Вы должны обработать событие instream end
. Событие end будет отправлено, когда данные полностью прочитаны из instream. Как только подсчет пространства завершен, а данные записаны в printstream и полностью использованы из instream, только вы сможете получить фактический подсчет пространства.
Также вы пропустили требование потока Transform.
var { Transform } = require('stream');
var fs=require('fs');
var inStream=fs.createReadStream('data.txt');
var outStream=fs.createWriteStream('out.txt');
var printStream=process.stdout;
var space=0;
var upperStream=new Transform({
transform(chunck,enc,cb){
var text=chunck.toString().toUpperCase();
for (var i=0;i<text.length;i++)
if(text[i]==' ')
space++;
this.push(text);
cb();
}
});
inStream.pipe(upperStream).pipe(printStream);
inStream.on('end', () => console.log(`Number of space in file : ${space}`));
Подробнее о потоковых событиях читайте здесь: https://nodejs.org/api/stream.html