Buffer:缓冲类,能存储二进制流,全局变量。Buffer
类的实例类似于整数数组,但 Buffer
的大小是固定的、且在 V8 堆外分配物理内存。 Buffer
的大小在被创建时确定,且无法调整。
类方法:
1:Buffer.alloc(size,[fill,encoding]),创建一个Buffer实例,fill是填充的数据,默认为0.
2:Buffer.allocUnsafe(size),这种方式创建的内存是未初始化的,所以速度更快,但因为未初始化,内容是未知的,可能包含敏感信息,可以使用buf.fill(0)初始化实例.
3: Buffer.allocUnsafeSlow(size),类似上面。上面会使用poolSize Buffer池,该方法是新建一快独立的内存。应当仅仅作为开发者已经在他们的应用程序中观察到过度的内存保留之后的终极手段使用。
4:Buffer.byteLength(size,encoding),返回一个字符串的实际字节长度。对于base64和hex,返回值可能大于真实buffer长度。
5:Buffer.from(array | buffer | string),新建一个buffer类。
6:Buffer.compare(buf1,buf2),比较2个buffer的大小,返回1或者-1,1大于2,就返回1.
7:Buffer.concat(list,totalLength)合并Buffer,返回合并后的新buffer。
8:Buffer.isBuffer(obj),判断obj是否是一个buffer类。
9:Buffer.isEncoding(encoding),如果 encoding
是一个支持的字符编码则返回 true
,否则返回 false
。
类属性:
1:Buffer.poolSize,这是用于决定预分配的内部Buffer池的字节数,默认8192可修改。
实例属性:
1:buf[index],通过下标可设置和修改buffer实例的数据,index合法范围是0-255 .
2:buf.buffer,该属性指向创建该Buffer的底层的ArrayBuffer对象。
3:buf.byteOffset()指定偏移量。
4:buf.compare(buf1),比较大小。比自己大,返回-1,小返回1,相等返回0.
5:buf.copy(target,targetStart,targetEnd),数据拷贝,可指定起始位置和结束位置。
6:buf.entries(),从buf的内容中,创建并返回一个[index,byte]形式的迭代器。然后用for of循环遍历出来。
7:buf.equals(otherbuf),判断2个buffer的字节是否一致。返回true或false。
8:buf.fill(value,offset,end,encoding),用来填充buf的值。
9:buf.includes(val,byteOffset,encoding),要搜索的值,开始搜索的位置,如果存在返回true,否则false.
10:buf.indexOf(val,byteOffset,encoding), 查找第一个符合要求的位置,没有返回-1。
11:buf.keys() ,遍历下标,利用for of 循环。
12:buf.lastIndexOf(val,byteOffset,encoding),从后面开始遍历查找。
13:buf.readUIntBE(offset)系列,读取某个下标的值,一系列的读取操作。
14:buf.slice(start,end),返回一个指向相同内存的新建buf,可以做偏移量。
15:buf.swap16() ,将 buf
解析为一个无符号16位的整数数组,并且以字节顺序原地进行交换。 如果 buf.length
不是2的倍数,则抛出 RangeError
错误。
16:buf.toJson(),将buf json化,注意解析,参考官网例子。
17:buf.toString(encoding,start,end),解码成字符串。
18:buf.values() ,和keys()是一对,一个遍历key,一个遍历values值。
19:buf.write(string,offset,length,encoding) ,写入。只能在原来基础上更改,不能变多和变少。