一,创建Buffer类
1.Buffer提供以下API创建Buffer类
1.1Buffer.alloc(size[, fill[, encoding ]]): 返回一个制定大小的Buffer实例,如果没有设置fill,则默认填满0
1.2Buffer.allocUnsafe(size): 返回一个制定大小的Buffer实例,但是它不会被初始化,所以它可能包含敏感的数据。
1.3Buffer.allocUnsafeSlow(size)
1.4Buffer.from(array): 返回一个被array的值初始化的新的Buffer实例(传入的array的元素只能是数字,不然就会自动被0覆盖)
1.5Buffer.from(arrayBuffer[, byteOffset[, length]]) : 返回一个新建的与给定的ArrayBuffer共享童一个内存的Buffer。
1.6Buffer.from(buffer): 复制传入的Buffer实例的数据,并返回一个新的Buffer实例
1.7Buffer.from(string[, encoding]) : 返回一个被string的值初始化的新的Buffer实例
二,写入缓冲区
buf.write(string[, offset[, length]][.encoding])
1.1 string - 写入缓冲区的字符串
1.2 offset - 缓冲区开始写入的索引值,默认为0
1.3 length - 写入的字节数,默认为buffer.length
1.4 encoding - 使用的编码。默认为'utf8'.
PS : 根据encoding的字符编码写入string到buf中的offset位置。
length参数是写入的字节数。
如果buf没有足够的 空间保存整个字符串,则只会写入string的一部分,只部分解码的字符不会被写入。
返回值:
返回实际写入的大小。如果buffer空间不足,则只会写入部分字符串。
三,从缓冲区中读取数据
语法
buf.toString([encoding[, start[, end]]])
1.1 encoding - 使用的编码。 默认为'utf8'.
1.2 start - 制定开始读取的索引位置,默认为0
1.3 end - 结束位置,默认为缓冲区的末尾
返回值:
解码缓冲区数据并使用制定的编码返回字符串。
四,将Buffer转换为JSON对象
语法
buf.toJSON()
返回JSON对象
五,缓冲区合并
语法
Buffer.concat(list[, totalLength])
参数
1.1 list - 用于合并的Buffer对象数组列表
1.2 totalLength - 制定合并后Buffer对象的总长度。
例子:
六,缓冲区比较
该方法在 Node.js v0.12.2 版本引入
语法
buf.compare(otherBuffer);
参数
1.1 otherBuffer - 与buf对象比较的另外一个Buffer对象。
返回值
返回一个数字,表示buf在otherBuffer之前,之后或相同。
实例如下:
七,拷贝缓冲区
语法
Node缓冲区拷贝语法:
buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])
参数
1.targetBuffer - 要拷贝的Buffer对象
2.targetStart - 数字,可选,默认: 0
3.sourceStart - 数字,可选,默认: 0
4.sourceEnd - 数字,可选,默认: buffer.length
返回值
没有返回值。
实例如下:
八,缓冲区裁剪
Node缓冲区裁剪语法
buf.slice([start[, end]])
参数
1.start - 数字,可选,默认:0
2.end - 数字,可选,默认: buffer.length
返回值
返回一个新的缓冲区,它和旧的缓冲区指向同一块内存,但是从索引start到end的位置剪切
实例
九,缓冲区长度
语法
Node缓冲区长度计算语法(是buffer对象所分配的内存数,它不会随着这个buffer对象内容的改变而改变)
buf.length;
返回值
返回Buffer对象所占据的内存长度。
实例