Node.js 第七章- Buffer(缓冲区) 下

一,创建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对象所占据的内存长度。

实例

 

猜你喜欢

转载自blog.csdn.net/u014085502/article/details/85076025