1:什么是node.js Buffer
<1>:js语言自身只有字符串数据类型。没有二进制数据类型
<2>:但是在处理tcp流或者文件的时候,必须使用到二进制数据,因此在node.js中,定义了一个buffer类,
用来创建一个专门存放二进制数据的缓存区。
<3>:buffer库给node.js带来了一种存储原始数据的方法,可以让nodejs处理二进制数据,每当在nodejs中处理I/O
操作中移动的数据时,就有可能使用buffer库。
2:创建buffer类
<1>方法一:
var buf = new Buffer(10);
<2>方法二:
var buf = new Buffer([10,20,30,40,50]);
<3>方法三:
var buf = new Buffer('www.runoob.com','utf-8');
3:写入缓冲区
写入node缓冲区的语法如下所示:
buf.write(string[, offset[, length]][, encoding])
string:写入到缓冲区的字符串
offset:缓冲区开始写入的索引值,默认为0;
length:写入的字节数,默认为buffer.length;
encoding:使用的编码,默认为:'utf8';
返回值:返回值实际写入大小,如果buffer空间不足,只会写入部分字符串
4:从缓冲区读取数据
buf.toString([encoding[,start[,end]]])
encoding:使用的编码,默认为:'utf8';
start:指定开始读取的索引位置,默认为0;
end:结束位置,默认为缓冲区的末尾
返回值:解码缓冲区数据并使用指定的编码返回字符串
5:将buffer转换为JSON对象
将node buffer转换为json对象的函数语法格式:
buf.toJSON();
返回值:json对象
6:缓冲区合并
node 缓冲区合并语法:
Buffer.concat(list[,totalLength])
list-用于合并buffer对象的数组队列
totalLength-指定合并后buffer对象的总长度
返回一个多个成员合并的新buffer对象
7:缓冲区比较
node buffer比较的函数语法如下所示:
buf.compare(otherBuffer);
参数:otherBuffer与buf对象比较的另外一个buffer对象。
返回值:返回一个数字,表示buf在otherBuffer之前之后或者相同。
8:拷贝缓冲区
buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])
targetBuffer - 要拷贝的buffer对象
targetStart - 数字,可选,默认:0;
sourceStart - 数字,可选,默认:0;
sourceEnd - 数字,可选,默认:buffer.length;
9:缓冲区裁剪
buf.slice([start[,end]])
参数:
start - 数字,可选,默认:0;
end - 数字,可选,默认:buffen.length;
返回值:返回一个缓冲区,它和旧缓冲区指向同一块内存,但是从索引start到end的
位置剪切。
10:缓冲区长度:
buf.length
返回值:buffer对象所占据的内存长度
其余用法参考:http://www.runoob.com/nodejs/nodejs-buffer.html
<1>:js语言自身只有字符串数据类型。没有二进制数据类型
<2>:但是在处理tcp流或者文件的时候,必须使用到二进制数据,因此在node.js中,定义了一个buffer类,
用来创建一个专门存放二进制数据的缓存区。
<3>:buffer库给node.js带来了一种存储原始数据的方法,可以让nodejs处理二进制数据,每当在nodejs中处理I/O
操作中移动的数据时,就有可能使用buffer库。
2:创建buffer类
<1>方法一:
var buf = new Buffer(10);
<2>方法二:
var buf = new Buffer([10,20,30,40,50]);
<3>方法三:
var buf = new Buffer('www.runoob.com','utf-8');
3:写入缓冲区
写入node缓冲区的语法如下所示:
buf.write(string[, offset[, length]][, encoding])
string:写入到缓冲区的字符串
offset:缓冲区开始写入的索引值,默认为0;
length:写入的字节数,默认为buffer.length;
encoding:使用的编码,默认为:'utf8';
返回值:返回值实际写入大小,如果buffer空间不足,只会写入部分字符串
4:从缓冲区读取数据
buf.toString([encoding[,start[,end]]])
encoding:使用的编码,默认为:'utf8';
start:指定开始读取的索引位置,默认为0;
end:结束位置,默认为缓冲区的末尾
返回值:解码缓冲区数据并使用指定的编码返回字符串
5:将buffer转换为JSON对象
将node buffer转换为json对象的函数语法格式:
buf.toJSON();
返回值:json对象
6:缓冲区合并
node 缓冲区合并语法:
Buffer.concat(list[,totalLength])
list-用于合并buffer对象的数组队列
totalLength-指定合并后buffer对象的总长度
返回一个多个成员合并的新buffer对象
7:缓冲区比较
node buffer比较的函数语法如下所示:
buf.compare(otherBuffer);
参数:otherBuffer与buf对象比较的另外一个buffer对象。
返回值:返回一个数字,表示buf在otherBuffer之前之后或者相同。
8:拷贝缓冲区
buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])
targetBuffer - 要拷贝的buffer对象
targetStart - 数字,可选,默认:0;
sourceStart - 数字,可选,默认:0;
sourceEnd - 数字,可选,默认:buffer.length;
9:缓冲区裁剪
buf.slice([start[,end]])
参数:
start - 数字,可选,默认:0;
end - 数字,可选,默认:buffen.length;
返回值:返回一个缓冲区,它和旧缓冲区指向同一块内存,但是从索引start到end的
位置剪切。
10:缓冲区长度:
buf.length
返回值:buffer对象所占据的内存长度
其余用法参考:http://www.runoob.com/nodejs/nodejs-buffer.html