Buffer类
在Node中,应用需要处理网络协议、操作数据库、处理图片、接收上传文件等,在网络流和文件的操作中,还要处理大量二进制数据,Buffer类被引入作为NodejsAPI的一部分,使其可以在TCP流和文件系统操作等场景中处理二进制数据流。
Buffer是一个典型的JavaScript与C++结合的模块,它将性能相关部分用C++实现,将非性能相关的部分用JavaScript实现。Buffer的本质就是字节数组。
因为Buffer在全局对象global上,因此无需通过require()引入,就可以直接使用。
实例化
在旧版本中使用Buffer的构造函数进行实例化,虽然速度较快,但是包含旧的数据,不够安全。
let buf = new Buffer(5);
console.log(buf);//<Buffer 00 00 00 00 00>
新版本中使用Buffer.alloc(size[, fill[, encoding]])代替,来分配一个大小为 size 字节的新建的没有用0填充的Buffer,encoding为字符编码,默认为utf-8。
- Buffer.alloc(size[, fill[, encoding]])
let buf = Buffer.alloc(5);
console.log(buf);//<Buffer 00 00 00 00 00>
- Buffer.allocUnsafe(size)
以这种方式创建的 Buffer 实例的底层内存是未初始化的。 新创建的 Buffer 的内容是未知的,可能包含敏感数据。
let buf = Buffer.allocUnsafe(5);
console.log(buf);//<Buffer 48 2a 59 31 00>
- Buffer.from(array),使用八位字节数组 array 分配一个新的 Buffer。
let buf = Buffer.from([0x62,