var readStream = fs.createReadStream(“ input.txt”);const readInterface = readline.createInterface({输入:readStream,输出:writerStream,控制台:假});
var writerStream = fs.createWriteStream('output.txt');
readInterface.on('line', function(line) {
var modifiedline = " modified ";
writerStream.write(modifiedline +"\n")
});
我是NodeJS的新手,试图理解。
1)它是否通过createReadStream从文件中获取第一个块,然后逐行给我?
当您执行createReadStream()
时,它将启动异步过程以打开文件。当您附加.on('line'. ...)
事件处理程序时,它将从文件中读取一个块,并且当它具有足够的数据来表示一行时,它将为它具有的每一行调用事件处理程序。当它读取的块中的所有行用完时,它会读取另一个块,然后针对缓冲区中的每一行依次调用事件处理程序,重复直到文件结尾。
2),因为我的writeStream处于'line'事件中-writeStream是在为每行写入输出文件还是在等待默认大小的块然后写入文件?
上次,我检查了writeStreams的代码,似乎几乎立即将数据写入文件,而不是对其进行缓冲。如果您想知道写操作何时完成,可以将回调传递给write()
方法,它会告诉您写操作何时完成。