node.js之基本流处理模块stream

stream

stream中的流是指一种抽象的数据结构,是一种将很大的数据分割成一小段一小段来传输的方式。
stream不需要引入,也可以说他不是个模块,因为他的方法都已经被其他可能用到流处理的模块暴露了。

用流来读取数据
var fs=require('fs');
var flowF=fs.createReadStream('aaa.js','utf-8');
var i=0;
flowF.on('data',function(chunk){
console.log(chunk);
i++;
});
flowF.on('end',function(){
    console.log('整个文件读取完了:一共读取了'+i+'次');
});
flowF.on('error',function(err){
    console.log('读取文件出现了错误'+err);
});

首先我通过不断的复制粘贴将aaa.js文件变成了两万多行var c=b;的大文件
然后通过上面代码输出最终除了输出无数个var c=b;之外还输出了:
整个文件读取完了:一共读取了4次,由此可见这个文档流是分四次读取完的。

然后我们看看aaa.js的大小是223KB,差不多一次读取个60KB左右,内存开销就少了非常多了,要是读取再大一点的文件内存开销差距就更大了

用流来存储数据
var fs=require('fs');
var flowWriteF=fs.createWriteStream('ccc.js');
for(var i=0;i<100000;i++){
flowWriteF.write('写入数据'+i+'\n');
}
flowWriteF.end(function(){
var theFS=fs.stat('ccc.js',function(err,stat){
if(err){
    console.log(err);
}else{
    console.log(stat.size);
}
});
});

最终输出了1788890也就是170来k的样子。

使用管道来转储数据
var fs=require('fs');
var rs=fs.createReadStream('ccc.js');
var ws=fs.createWriteStream('aaa.js');
rs.pipe(ws);

这样就将ccc.js的所有内容给予了aaa.js,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值