我不明白fs.createReadStream在node.js中如何工作。

我有示例代码:

var fs = require('fs');


var stream = fs.createReadStream(__dirname + '/read.text');

stream.on('data', function(chunk){
    console.log('new chunk arrived');
    console.log(chunk);
    console.log('');
})

stream.on('close', function(){
    console.log('file closed')
})

stream.on('end', function(){
    console.log('stream ended')
})

stream.on('open', function(){
    console.log('File opened')
});

console.log('one');
console.log('two');


在此代码中,文件中的块何时将开始流式传输?

当我们在线声明一个对象时?

var stream = fs.createReadStream(__dirname + '/read.text');


在这条线上?

 stream.on('data', function(chunk){
    console.log('new chunk arrived');
    console.log(chunk);
    console.log('');
})


还是在执行整个代码时?

同步还是异步?

如果您逐行解释代码,我将不胜感激。

最佳答案

javascript是完全异步的,

函数createReadStream按以下顺序调用事件,


open:您的文件存在并且已打开
data:nodejs读取每个块的内容并调用数据事件(大小默认值:64kb)
结束:所有数据都在流中
关闭:文件已关闭


在行中

var stream = fs.createReadStream(__dirname + '/read.text');


您创建的流是空的,但是启动数据,记录事件的过程永远不会启动过程,

07-24 13:41