Buffer 是用来处理缓冲区的专用API,用于创建缓冲区,操作缓冲区数据的场景。主要用于操作二进制数据流,其用法与数组非常相似。在 Nodejs 中处理二进制流就需要用到 Buffer。Buffer 实例一般用于表示编码字符的序列,比如 UTF-8 、 UCS2 、 Base64 、或十六进制编码的数据。 通过使用显式的字符编码,就可以在 Buffer 实例与普通的 JavaScript 字符串之间进行相互转换。
一、创建方式:
- new Buffer(size) 创建一个指定大小的buffer
- Buffer.alloc():请求一块干净的内存空间作为缓冲区
- Buffer.allocUnsafe():请求一块内存空间作为缓冲区,但不一定是干净的
- Buffer.from():从其他类型数据生成一个新的Buffer
*使用new操作符,有四种方法创建一个Buffer实例【nodejs 6以后不再推荐该方式创建】:
- new Buffer(size),创建一个指定大小的buffer ;
- new Buffer(array),根据一个字节数组来创建一个buffer;
- new Buffer(str[,encoding]),根据一个字符串和编码格式创建buffer;
- 不指定编码时默认使用utf8 new Buffer(buffer),根据buffer实例创建一个新的buffer。
二、实例方法:
- Buffer.prototype.write(): 向bufffer中写入数据;
- Buffer.prototype.fill():将数据填充到缓冲区
- Buffer.prototype.indexOf():获取缓冲区中某个数据的索引
- Buffer.prototype.slice():切割缓冲区的一部分作为新的缓冲区返回,但不改变原来的缓冲区
- Buffer.prototype.toString():将缓冲区的二进制数据根据一定的编码规则转换为字符串
- Buffer.prototype.copy():拷贝缓冲区数据到新的缓冲区并返回新缓冲区
- Buffer.prototype.(otherBuffer): 比较两个buffer对象是否相等
三、静态方法:
Buffer.isEncoding()方法:
- 语法:
Buffer.isEncoding(encoding)
- 参数:
encoding
检查的字符编码名称
Buffer.isBuffer()方法:
-
语法:
Buffer.isBuffer(obj)
-
参数:
obj
是一个Buffer
,则返回true
,否则返回false
。
Buffer.byteLength()方法:
- 语法:
Buffer.byteLength(string[, encoding])
- 参数:
string
返回字符串的实际字节长度
**Buffer.concat()方法:**将多个buffer拼接成一个新的buffer
- 语法:
Buffer.concat(list[, totalLength])
- 参数1:
list
要合并的Buffer
数组或Uint8Array
](https://links.jianshu.com/go?to=http%3A%2F%2Fnodejs.cn%2Fs%2FZbDkpm) 数组 - 参数2:
totalLength
实例的总长度。
Buffer.byteLength()方法:
- 语法:
Buffer.byteLength(string[, encoding])
- 参数:
string
返回字符串的实际字节长度