我不明白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');
您创建的流是空的,但是启动数据,记录事件的过程永远不会启动过程,