Nodejs 简述Buffer的使用,包含多重创建方式、实例方法及静态方法

Buffer 是用来处理缓冲区的专用API,用于创建缓冲区,操作缓冲区数据的场景。主要用于操作二进制数据流,其用法与数组非常相似。在 Nodejs 中处理二进制流就需要用到 Buffer。Buffer 实例一般用于表示编码字符的序列,比如 UTF-8 、 UCS2 、 Base64 、或十六进制编码的数据。 通过使用显式的字符编码,就可以在 Buffer 实例与普通的 JavaScript 字符串之间进行相互转换。

一、创建方式:

  1. new Buffer(size) 创建一个指定大小的buffer
  2. Buffer.alloc():请求一块干净的内存空间作为缓冲区
  3. Buffer.allocUnsafe():请求一块内存空间作为缓冲区,但不一定是干净的
  4. 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 返回字符串的实际字节长度

猜你喜欢

转载自blog.csdn.net/weixin_40599109/article/details/115395280