node.js基础 Stream流
来源:互联网 发布:js正则表达式空格 编辑:程序博客网 时间:2024/06/05 12:41
Buffer是用来保存原始数据
流是用来暂存和移动数据的
通常是结合起来使用
还是复制一张图片
var fs = require('fs')var source = fs.readFileSync('../buffer/timg.jpeg')fs.writeFileSync('stream_copy_timg.jpeg', source)
在node中node 文件名.js 就可以实现一张图片的复制
会不会这样的操作太简单暴力了,没办法精确的控制数据在流里面的传输,这个不用担心,stream是根据事件机制工作的,这就意味着在流对象上具有异步操作的特征,可以触发事件,监听事件,也就是说流在各个阶段的事件我们都可以监听。为了有更直观的认识,我们还是上一段代码:
//加载文件系统模块var fs = require('fs')//加载一个可读的流,读取js文件var readStream = fs.createReadStream('stream_copy_logo.js')//声明一个计数器var n = 0readStream //数据正在传递时触发data事件 .on('data', function(chunk) { n++ console.log('data emits') //验证流是以buffer传递 console.log(Buffer.isBuffer(chunk)) //打印文件内容 console.log(chunk.toString('utf8')) //暂停流 readStream.pause() console.log('data pause') //模拟一个异步处理 setTimeout(function() { console.log('data pause end') //从新启动数据传递 readStream.resume() }, 3000) }) //文件是可读的 .on('readable', function() { console.log('data readable') }) //数据完成传递完成后触发 .on('end', function() { console.log(n) console.log('data ends') }) //整个流传输结束关闭是触发 .on('close', function() { console.log('data close') }) //读取出错触发 .on('error', function() { console.log('data read error' + e) })
在控制台打印出来
我们通过看n的数值乐意了解到一共接受了多少次数据
上面是对进行读取一个文件,接下来是边读边写
//加载文件模块var fs = require('fs')//创建一个刻度流var readStream = fs.createReadStream('stream_copy_timg.jpeg')//创建一个写入流var writeStream = fs.createWriteStream('timg-stream.jpeg')//触发data事件,绑定监听函数readStream.on('data', function(chunk) { //判断数据是否写入,如果没写入,还在缓存取,就让读的速度慢点 if(writeStream.write(chunk) === false) { console.log('stil cached') //读取先暂停 readStream.pause() }})//数据读取完毕,关闭数据流,end方法readStream.on('end', function() { writeStream.end()})//数据应尽写入到目标了writeStream.on('drain', function(){ console.log('data drains') //可以继续读了 readStream.resume()})
在控制台node 文件名.js
我们可以看到这样的信息
说明文件在不停的读 不停的写
阅读全文
0 0
- node.js基础 Stream流
- Node.js Stream - 基础篇
- Node.js Stream(流)
- Node.js Stream(流)
- Node.js Stream(流)
- Node.js Stream(流)
- Node.js Stream(流)
- Node.js Stream(流)
- Node.js Stream流
- 微信小程序 Node.js (基础七) Stream(流)
- 微信小程序 Node.js (基础七) Stream(流)
- Node.js管道流Stream
- JavaScript基础之Node.js与stream
- Node.Js Stream(流)-(四)Stream类扩展
- Node.Js Stream(流)-(一)
- Node.Js Stream(流)-(二)
- Node.Js Stream(流)-(三)
- node.js Stream
- spring自带的定时任务功能,基于注解和xml配置
- imx6ul+uart使用
- GreenDao的增删改查
- python2.7 遇到ascii编码问题解决方法
- Ajax(jQuery的ajax()方法)
- node.js基础 Stream流
- Jenkins + Jmeter 搭建简易CI (自动执行接口测试+发布web报告+发送邮件)
- sqlserver连接
- 初学者福音,教你如何学好java!
- 问题杂记
- STM32 I2C学习
- 自顶向下,逐步求精(Top-down)的程序设计方法简介
- Excel MAC十六进制递增
- C语言中如何求一个数组的长度