关于Stream和Buffer的相互转换详解
前言
最近在工作的时候突然就有了这样一个需求,这一次正好也对本来不太熟的 Stream 有了一点更加深刻的理解……(好吧本来是根本没搞清楚状况)。本文将给大家详细介绍关于Stream和Buffer相互转换的相关资料,下面话不多说,来一起看看详细的介绍吧。
方法如下:
Stream,中文叫做流,和我们平时充值信仰的那个 Steam 还是差了那么一点的。所谓流,是一种消费的模型,被消费完就木有了,所以如果我们需要重复使用,就得存下来,也就是把 Stream 转成别的东西——Just Like Array or Buffer。
上代码表演一下:
function streamToBuffer(stream) { return new Promise((resolve, reject) => { let buffers = []; stream.on('error', reject); stream.on('data', (data) => buffers.push(data)) stream.on('end', () => resolve(Buffer.concat(buffers)) }); }
Buffer.concat(buffers)
之后就转换为了 Buffer,可以重复使用了。
逆向转换也很简单:
let Duplex = require('stream').Duplex; function bufferToStream(buffer) { let stream = new Duplex(); stream.push(buffer); stream.push(null); return stream; }
参考:
http://derpturkey.com/buffer-to-stream-in-node/
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
相关推荐
-
关于Stream和Buffer的相互转换详解
前言 最近在工作的时候突然就有了这样一个需求,这一次正好也对本来不太熟的 Stream 有了一点更加深刻的理解--(好吧本来是根本没搞清楚状况).本文将给大家详细介绍关于Stream和Buffer相互转换的相关资料,下面话不多说,来一起看看详细的介绍吧. 方法如下: Stream,中文叫做流,和我们平时充值信仰的那个 Steam 还是差了那么一点的.所谓流,是一种消费的模型,被消费完就木有了,所以如果我们需要重复使用,就得存下来,也就是把 Stream 转成别的东西--Just Like Arr
-
java list,set,map,数组间的相互转换详解
java list,set,map,数组间的相互转换详解 1.list转set Set set = new HashSet( new ArrayList()); 2.set转list List list = new ArrayList( new HashSet()); 3.数组转为list List stooges = Arrays.asList( "Larry" , "Moe" , "Curly" ); 此时stooges中有有三个元素.注意
-
Java Date与String的相互转换详解
Java Date与String的相互转换详解 前言: 我们在注册网站的时候,往往需要填写个人信息,如姓名,年龄,出生日期等,在页面上的出生日期的值传递到后台的时候是一个字符串,而我们存入数据库的时候确需要一个日期类型,反过来,在页面上显示的时候,需要从数据库获取出生日期,此时该类型为日期类型,然后需要将该日期类型转为字符串显示在页面上,Java的API中为我们提供了日期与字符串相互转运的类DateForamt.DateForamt是一个抽象类,所以平时使用的是它的子类SimpleDateFor
-
Golang Protocol Buffer案例详解
Golang Protocol Buffer教程 本文介绍如何在Go应用中利用Protocol Buffer数据格式.主要包括什么是Protocol Buffer数据格式,其超越传统数据格式XML或JSON的优势是什么. 1. Protocol Buffer数据格式 Protocol Buffer,本质就是一种数据格式,和JSON或XML一样,不同的语言用于结构化数据序列化或反序列化.该数据格式的优势是较xml或json更小,源于Google.假如我们有一个对象,我们用三种数据结构进行表示: <
-
Redis Stream类型的使用详解
目录 一.背景 二.redis中Stream类型的特点 三.Stream的结构 四.Stream的命令 1.XADD 往Stream末尾添加消息 1.命令格式 2.举例 2.XRANGE查看Stream中的消息 1.命令格式 2.准备数据 3.举例 3.XREVRANGE反向查看Stream中的消息 4.XDEL删除消息 1.命令格式 2.准备数据 3.举例 5.XLEN查看Stream中元素的长度 1.命令格式 2.举例 6.XTRIM对Stream中的元素进行修剪 1.命令格式 2.准备数据
-
Java 栈和队列的相互转换详解
目录 用栈实现队列-力扣232题 用队列实现栈-力扣225题 1. 双队列实现栈 2.一个队列实现栈 栈和队列的本质是相同的,都只能在线性表的一端进行插入和删除.因此,栈和队列可以相互转换. 用栈实现队列-力扣232题 题目要求:仅使用两个栈实现先入先出队列.队列应当支持一般队列支持的所有操作 使用双栈来实现队列,我们就可以让一个栈储存具体元素,另一个栈做辅助 上图可以看到,新元素进栈时,要确保该栈为空.进入栈的元素按顺序存到辅助栈中,等新元素进入栈之后,再将辅助栈中的元素按顺序出到该栈中.
-
Java Stream流语法示例详解
目录 如何使用Stream? Stream的操作分类 1.创建流 2.操作流 1)过滤 2)映射 3)匹配 4)组合 3.转换流 如何使用Stream? 聚合操作是Java 8针对集合类,使编程更为便利的方式,可以与Lambda表达式一起使用,达到更加简洁的目的. 前面例子中,对聚合操作的使用可以归结为3个部分: 1) 创建Stream:通过stream()方法,取得集合对象的数据集. 2) Intermediate:通过一系列中间(Intermediate)方法,对数据集进行过滤.检索等数
-
Java基本数据类型之间的相互转换详解
目录 1.自动类型转换 1.定义 2.数据类型按精度大小排序 3.使用细节 2.强制类型转换 1.定义 2.使用细节 3.基本数据类型与String类型的转换 1.基本数据类型转String类型 2.String类型转基本数据类型 今天主要学习的是Java基本数据类型之间的转换以及String类型与基本数据类型之间的转换 1.自动类型转换 1.定义 Java程序在进行赋值或运算时,自动将精度小的转换成精度大的. 2.数据类型按精度大小排序 char —> int —> long —> f
-
Spring Cloud Stream 高级特性使用详解
目录 重试 消息发送失败的处理 消费错误处理 自定义MessageHandler类型 Endpoint端点 Metrics指标 Serverless Partition统一 Polling Consumer 支持多个Binder同时使用 建立事件机制 重试 Consumer端可以配置重试次数,当消息消费失败的时候会进行重试. 底层使用Spring Retry去重试,重试次数可自定义配置. # 默认重试次数为3,配置大于1时才会生效 spring.cloud.stream.bindings.<ch
-
Go语言中基本数据类型的相互转换详解
目录 基本数据类型的相互转换 基本语法 小知识 基本数据类型和string的转换 方法一 方法二 string和基本数据类型转换 基本数据类型的相互转换 Go在不同类型的变量之间赋值时需要显示转换,不能自动转换 基本语法 表达式 T(v): 将值v转换成类型T T就是数据类型: int32, int64, float32... v就是需要转换的变量 1.不考虑溢出的情况下,类型转换不会改变数值大小 var i int8 = 100 var n int32 = int32(i) fmt.Print
随机推荐
- 如何把中文转换为UNICODE?
- Java中checkbox实现跨页多选的方法
- 总结Visual Studio下ASP.NET模板化控件中的数据绑定
- 一个颜色轮换的简单例子
- 怎么利用c#修改services的Startup type
- C#函数式编程中的惰性求值详解
- Mysql 默认字符集设置方法(免安装版)
- Android开发技巧之像QQ一样输入文字和表情图像
- 表格隔行换色 css expression
- 仿Iphone中搜索结果的布局详解
- centos6.5中安装mongodb简明总结
- javascript实现依次输入input自动定焦
- C#中的委托数据类型简介
- 深入浅析Android手机卫士保存密码时进行md5加密
- iOS开发之image图片压缩及压缩成指定大小的两种方法
- Java上传视频实例代码
- 详解vue+webpack+express中间件接口使用
- 解决layui的form里的元素进行动态生成,验证失效的问题
- android桌面悬浮窗显示录屏时间控制效果
- vue 监听屏幕高度的实例