前言

本文主要给大家介绍了关于Node.js 流(stream)的使用方法,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍:
流是基于事件的API,用于管理和处理数据,而且有不错的效率.借助事件和非阻塞I/O库,流模块允许在其可用的时候动态处理,在其不需要的时候释放掉.
使用流的好处
举一个读取文件的例子:
使用fs.readFileSync同步读取一个文件,程序会被阻塞,所有的数据都会被读取到内存中.
换用fs.readFile读取文件,程序不会被阻塞,但是所有的数据依旧会被一次性全部被读取到内存中.
当处理大文件压缩,归档,媒体文件和巨大的日志文件的时候,内存使用就成了问题,在这种情况下,流的优势就体现出来了.
流被设计为异步的方式.相比将剩余的文件数据一次性读进内存,还是值得读取一个缓冲区,期望的操作将会被执行,而且结果会被写到输出流.
流的分类
stream.Readable---用于在I/O上获取数据stream.Writable---用于在输出的目标写入数据stream.Duplex---一个可读可写的流,例如网络连接stream.Transform---一个会以某种方式修改数据的双工流创建一个可读流
方法一
var Stream = require('stream')
var readable = Stream.Readable();
var source = ['a', 'b', 'c'];
readable._read = function() {
this.push(source.shift() || null);
}
readable.pipe(process.stdin);
方法二
var Readable = require('stream').Readable;
function MyStream(options) {
Readable.call(this, options);
}
MyStream.prototype = Object.create(Readable.prototype, {
constructor: { value: MyStream }
});
MyStream.prototype._read = function() {
this.push("hello");
this.push(null);
}
var streams = new MyStream();
streams.pipe(process.stdin);
方法三
var stream = require('stream');
var util = require('util');
function MyStream(options) {
stream.Readable.call(this, options);
}
MyStream.prototype._read = function(size) {
this.push('hello');
this.push(null);
}
util.inherits(MyStream, stream.Readable);
var streams = new MyStream();
streams.pipe(process.stdout);
可读流的一些概念
可读流是 对提供数据的源头的抽象
可读流的实例
可读流的模式
可读流有两种工作模式:flowing和paused.
在flowing模式下,可读流自动从系统底层读取数据,并通过EventEmitter接口的事件尽快将数据提供给应用.
可读流在创建的时候都是处在paused模式.
可读流可以在两种模式下切换.
处于paused模式可读流,可以通过下面三种途径切换到flowing模式:
stream.resume()方法.stream.pipe()方法将数据发送到Writable处于flowing模式可读流,可以通过下面两种途径切换到paused模式:
stream.pause()方法实现stream.unpipe()方法移除所有管道来实现可读流事件
可读流提供了以下事件:
总结
以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# nodejs
# 流
# node
# 可读流
# fs
# 读取文件流
# Node.js中的流(Stream)的作用详解
# node.js同步/异步文件读写-fs
# Stream文件流操作实例详解
# Node.js数据流Stream之Duplex流和Transform流用法
# Node.js数据流Stream之Readable流和Writable流用法
# node.js中stream流中可读流和可写流的实现与使用方法实例分析
# node.js使用stream模块实现自定义流示例
# Node.js中你不可不精的Stream(流)
# Node.js中的流(Stream)介绍
# Node.js 中的流Stream模块简介及如何使用流进行数据处理
# 可以通过
# 将在
# 两种
# 会在
# 双工
# 切换到
# 都是
# 将会
# 不需要
# 模式下
# 才会
# 中有
# 给大家
# 不存在
# 三种
# 可供
# 写到
# 发送到
# 这篇文章
# 有两种
相关文章:
nginx修改上传文件大小限制的方法
开源网站制作软件,开源网站什么意思?
如何在IIS中新建站点并配置端口与物理路径?
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
制作营销网站公司,淘特是干什么用的?
婚礼视频制作网站,学习*后期制作的网站有哪些?
宝塔面板如何快速创建新站点?
Python路径拼接规范_跨平台处理说明【指导】
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
高防服务器如何保障网站安全无虞?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
如何通过.red域名打造高辨识度品牌网站?
C++如何编写函数模板?(泛型编程入门)
如何在景安服务器上快速搭建个人网站?
制作网站的公司有哪些,做一个公司网站要多少钱?
建站168自助建站系统:快速模板定制与SEO优化指南
建站之星下载版如何获取与安装?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
宁波免费建站如何选择可靠模板与平台?
,交易猫的商品怎么发布到网站上去?
php json中文编码为null的解决办法
如何快速搭建响应式可视化网站?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
如何通过虚拟主机空间快速建站?
建站之星上传入口如何快速找到?
怎么将XML数据可视化 D3.js加载XML
如何基于云服务器快速搭建网站及云盘系统?
html制作网站的步骤有哪些,iapp如何添加网页?
5种Android数据存储方式汇总
linux top下的 minerd 木马清除方法
如何用腾讯建站主机快速创建免费网站?
如何通过可视化优化提升建站效果?
C#如何序列化对象为XML XmlSerializer用法
建站之星导航配置指南:自助建站与SEO优化全解析
c# Task.ConfigureAwait(true) 在什么场景下是必须的
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
建站之星客服服务时间及联系方式如何?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
如何快速搭建高效WAP手机网站吸引移动用户?
建站之星安装提示数据库无法连接如何解决?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
免费视频制作网站,更新又快又好的免费电影网站?
常州企业建站如何选择最佳模板?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
如何通过远程VPS快速搭建个人网站?
制作旅游网站html,怎样注册旅游网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。