为何需要buffer?
因为JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。而我们需要会读取和处理二进制数据。
如何创建一个buffer?
用new关键字,如下创建了一个字符串的buffer。 length属性用来查看buffer的长度
> var buf = new Buffer("www.runoob.com", "utf-8");
undefined
> buf.length
14
再比如创建一个数组的buf
> var buf = new Buffer([1,2,3])
undefined
> buf.length
3
还可以这样
如下,先创建一个buffer,123的意思是buffer的长度是123.之后再向上述buf写入内容,然后返回值是buf的长度。就是apple的字符数。
> buf=new Buffer(123)
<Buffer 01 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 a4 00 04 01 00 00 00 0a 00 00 00 00 00 00 00 78 a4 00 04 01 00 00 00 05 00 00 00 01 00 00 00 00 00 ... >
> buf.write('apple')
5
如何读取buffer数据?
如下,利用toString函数,参数是解码方式,以及起始和结束值。
> buf=new Buffer(26)
<Buffer 01 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 42 80 03 01 00 00 00 0a 00>
> for (var i=0;i<26;i++){
... buf[i]=i+97;}
122
> console.log(buf.toString('ascii',0,5));
abcde
合并buffer
利用Buffer.concat,参数是一个数组。
> buf1=new Buffer('you love me')
<Buffer 79 6f 75 20 6c 6f 76 65 20 6d 65>
> buf2=new Buffer('you hate me')
<Buffer 79 6f 75 20 68 61 74 65 20 6d 65>
> var buffer3=Buffer.concat(buf1,buf2)
> console.log(buffer3.toString('ascii'))
you love meyou hate me
undefined
剪裁缓冲区
利用slice。
> var buffer1 = new Buffer('runoob');
> var buffer2 = buffer1.slice(0,2);
> console.log(buffer2.toString())
ru
总结
没啥意思