Buffer 缓冲区
--------------------------------------
什么是Buffer
Buffer是用来存储二进制数据的对象 但是结果以16进制的形式表示出来
# Buffer是一个类数组对象,不是数组
Buffer的作用
javascript能够处理字符串,对字符串进行一些操作,但是对于一些二进制数据就没法操作了。
buffer是用来处理二进制文件流和TCP流(http的底层协议)的文件缓存区,可以将二进制流和string进行相互转换
Buffer的特点
buffer对象里面存储的是字节,而不是字符串或者其他的数据类型 主要热点是用来操作字节的
Buffer是一个类数组对象
什么时候用到buffer
用到数据流的地方就会用到buffer(比如文件读取,http中post请求传递的数据)
# EF BB BF 微软在自己的UTF-8格式的文本文件之前加上了EF BB BF三个字节 用来检测一个字节流是否是UTF-8编码的
创建一个buffer对象
var buf = Buffer(字符串);
将一个buffer对象转换为字符串
var str = buf.toString();
-----------------------------------------
流操作(stream) 一般代表文件读写操作
为什么要有流操作
如果读取或者写入一个比较大的文件如(音频或者视频一般为几个G左右),如果使用writeFile或者readFile来操作,非常容易使电脑内存"爆仓",因为电脑内存一般也就4G,8G左右
理想的方法应该是分多次对数据进行读写操作,不管文件有多大,只要时间允许,总会处理完成。这时后就需要有流操作了
什么是流
把一个文件比喻成一个水桶,文件里面的内容比作为水,我们用一根管子(pipe)连接两个桶使得水从一个桶流入另一个桶,这样就慢慢的实现了大文件的复制过程(也就是流的过程)。
从文件读取数据时,可以打开一个文件流,然后从文件