offset <Integer> 开始写入 string 的位置。默认: 0
length <Integer> 要写入的字节数。默认: buf.length – offset
encoding <String> string 的字符编码。默认: ‘utf8’;返回: <Integer> 写入的字节数
根据 encoding 的字符编码写入 string 到 buf 中的 offset 位置。 length 参数是写入的字节数。 如果 buf 没有足够的空间保存整个字符串,则只会写入 string 的一部分。 只部分解码的字符不会被写入
var buf = Buffer.alloc(5); console.log(buf); //<Buffer 00 00 00 00 00>
var len = buf.write('test',1,3);
console.log(buf);//<Buffer 00 74 65 73 00>
console.log(len);/3
由于可以不断写入内容到Buffer对象中,并且每次写入可以指定编码,所以Buffer对象中可以存在多种编码转化后的内容。需要小心的是,每种编码所用的字节长度不同,将Buffer反转回字符串时需要谨慎处理
toString()
实现Buffer向字符串的转换也十分简单,Buffer对象的toString()可以将Buffer对象转换为字符串
buf.toString([encoding], [start], [end])
encoding – 使用的编码。默认为 ‘utf8’
start – 指定开始读取的索引位置,默认为 0
end – 结束位置,默认为缓冲区的末尾
返回 – 解码缓冲区数据并使用指定的编码返回字符串
var buf =Buffer.alloc(26);
for (var i = 0 ; i < 26 ; i++) {
buf[i] = i + 97;
}
console.log( buf.toString('ascii'));//abcdefghijklmnopqrstuvwxyz
console.log( buf.toString('ascii',0,5));//abcde
console.log( buf.toString('utf8',0,5));//abcde
console.log( buf.toString(undefined,0,5));//abcdetoJSON()
将 Node Buffer 转换为 JSON 对象
buf.toJSON()
返回 buf 的 JSON 格式
var buf = Buffer.from('test');
var json = buf.toJSON(buf);
console.log(json);//{ type: 'Buffer', data: [ 116, 101, 115, 116 ] }isEncoding()
目前比较遗憾的是,Node的Buffer对象支持的编码类型有限,只有少数的几种编码类型可以在字符串和Buffer之间转换。为此,Buffer提供了一个isEncoding()函数来判断编码是否支持转换
Buffer.isEncoding(encoding)
将编码类型作为参数传入上面的函数,如果支持转换返回值为true,否则为false。很遗憾的是,在中国常用的GBK、GB2312和BIG-5编码都不在支持的行列中
console.log(Buffer.isEncoding('utf8'));//trueconsole.log(Buffer.isEncoding('gbk'));//false
Buffer类方法
Buffer.byteLength(string[, encoding])
Buffer.byteLength()方法返回一个字符串的实际字节长度。 这与 String.prototype.length 不同,因为那返回字符串的字符数









