why?
javascript不擅长处理二进制数据而node需要处理二进制的数据,因此引入一个二进制的缓冲区来实现,它将buffer伪类的javascript API暴露给外界 它以字节为计量单位,可以设置和获取缓冲区的数据
(1)创建缓冲区
var buf = new Buffer(‘*‘,‘*‘);
参数1 缓冲区初始化的内容
参数2 使用什么编码风格创建缓冲区
var buf = new Buffer(‘hello world‘,‘UTF-8‘);
也可以这样初始化缓冲区
var buf = new Buffer(1024); //指定缓冲区长度(在这里我们虽然没有设置缓冲区的值 但是里面存储的是一些随机的值)
(2)获取缓冲区数据和设置数据
var buf = new Buffer(1024);
console.log(buf[100]);//获取100位置的字节
buf[100] = 120;//设置100位置的字节
(3)切分缓冲区和复制缓冲区
var buffer = new Buffer(‘hello world‘);
var smallbuffer = buffer.slice(0,5);
console.log(smallbuffer.toString());//hello
切分缓冲区并没有分配新的内存,所以当父缓冲区修改的时候,子缓冲区也会得到修改 父缓冲区不会被垃圾收集处理
而复制缓冲区则不同
var buffer = new Buffer(‘hello world‘);
var smallbuffer = new Buffer(6);;
buffer.copy(smallbuffer,0,0,5);
console.log(smallbuffer.toString());//hello
(5)缓冲区解码
前面用过smallbuffer.toString()
也可以为它指定字符集