Buffer缓冲区
- buffer可以在流(stream)中与二进制数据进行交互和操作
- 暂时存放I/O数据的内存
- 创建buffer对象
/*
Buffer.alloc(size[, fill[, encoding]]):
返回一个指定大小的 Buffer 实例,如果没有设置 fill,则默认填满 0
*/
// 创建一个长度为 10、且用 0 填充的 Buffer。
const buffer1 = Buffer.alloc(10);
//也可以指定一个数进行填充
const buff = Buffer.alloc(10,2);
console.log(buff);
//输出结果
<Buffer 02 02 02 02 02 02 02 02 02 02>
// 创建一个长度为 10、且未初始化的 Buffer。
// 这个方法比调用 Buffer.alloc() 更快,
// 但返回的 Buffer 实例可能包含旧数据,
// 因此需要使用 fill() 或 write() 重写。
//Buffer.allocUnsafe(size): 返回一个指定大小的 Buffer 实例,
//但是它不会被初始化,所以它可能包含敏感的数据
const buffer3 = Buffer.allocUnsafe(10);
- 缓冲区写入数据
// 数据写入缓冲区
/**
*
* buf.write(string, offset, length, encoding)
* 1.string 写入缓冲区的字符串
* 2.offset:开始写入的索引值,默认为0
* 3.length:写入的字节数
* 4.encoding:使用的编码
*/
var len = buffer1.write("Hello,Word!","utf-8");
console.log(len);
// 从缓冲区读取数据
console.log(buffer1.toString());
const buffer2 = Buffer.alloc(10,1);
// 填充指定数据
buffer3.fill(2);
// Buffer.from(array): 返回一个被 array 的值初始化的
//新的 Buffer 实例(传入的 array 的元素只能是数字,不然就会自动被 0 覆盖)
var buf = Buffer.from([1,2,3,4]);
console.log(buf);
- Buffer转换为json对象
// 将Buffer转换为JSON对象
const buf1 = Buffer.from([1,2,3,4,5]);
const json = JSON.stringify(buf1);
console.log(json);
//输出结果
{"type":"Buffer","data":[1,2,3,4,5]}
//解析Json,转化为Buffer对象
const copy = JSON.parse(json,(key,value)=>{
return value && value.type === 'Buffer' ? Buffer.from(value.data):value;
});
结果
<Buffer 01 02 03 04 05>