您的位置:首页 > Web前端 > Node.js

nodejs buffer

2016-05-27 17:04 363 查看
1.事件模块 var events=require(‘events’);EventEmitter类来绑定监听事件

eventEmitter.on('eventname',eventHandler);//绑定事件及事件处理函数

触发事件

eventEmitter.emit("eventname")//触发事件

on(event,listener)//为指定事件注册一个监听器,

once(event,listener)//为制定事件注册一次监听器,监听器最多触发一次,触发后立刻解除该监听器

removeListener(event,listener);//移除指定事件的监听器

removeAllListeners([event])//移除所有事件的所有监听器

setMaxListeners(n)//默认情况下eventEmitters添加的监听器超过10个就回输出警告 setMaxListeners用于提高监听器的默认值的数量

listeners(event)//返回指定的事件的监听器数组

emit(event,[arg1],[arg2])//按照参数的顺序执行每个监听器

2. Buffer(缓冲区)

js语言自身只有字符串数据类型没有二进制数据类型

buffer用来创建一个专门存放二进制数据的缓存区

创建buffer类

var buf = new buffer(10);//创建长度为10字节的buffer实例

var but = new buffer([10,20,30,40,50]);//通过制定的数组创建buffer实例

var buf = new buffer("wwww.baidu.com","utf-8");//通过一个字符串创建buffer实例

!:utf-8默认的编码方式,此外还支持ascii utf8 utf16le ucs2 bass64 和 hex

写入缓冲区

buffer.write(string[,offset[,length]][,encoding])

string - 写入缓冲区的字符串

offset - 缓冲区开始写入的索引值,默认0

length - 写入的字节数,默认是buffer.length

encoding - 使用的编码 默认utf8

var buf = new buffer(200);

或buf = new buffer('abcedededededede',utf-8);

len = buf.write('de',8,3,utf-8);

console.log(len);

从缓冲区读取数据

语法 buffer.toString([encoding[,start[, end]]])

encoding - 编码

start - 开始读取的索引位置 默认值0

end 结束位置,默认为缓冲区结尾

buf = new buffer(26);
for(var i=0;i<26;i++){
buf[i] = i +97;
}

console.log(buf.toString('ascii')); //输出:a-z26个字符
console.log(buf.tostring('ascii',0,5));//输出 abcde


  

将buffer 转换成json对象

buffer.toJSON();

var buf = new buffer('wwwhhhhh');

var json = buf.toJSON(buf);

console.log(json);

输出二进制 [119,119,119,......]

缓冲区合并

buffer.concat(list,totalLength);

list - 用于合并的buffer对象数组列表

totalLength - 指定合并后 buffer对象的总长度

返回一个多个成员合并的buffer对象的总长度

var buf1 = new buffer('dou');
var buf2 = new buffer(chuan);
var buf3 = buffer.concat([buf1,buf2]);
console.log('dayin'+buf3.toString(buf3,'utf-8'));
//打印 dayin douchuan


  

缓冲区比较

buf.compare(otherbuffer);

var buf1 = new buffer('abc');
var buf2 = new buffer('abcde');
var result = buf1.compare(buf2);

if(result<0){
console.log(buf1+在+buf2+之前);
}else if(result ==0){
buf1+与+buf2+相同
}else{
console.log(buf1+在+buf2 +之后);
}


  

拷贝缓冲区

buffer.copy(targetBuffer,targetStart,sourceStart,sourceEnd);

targetBuffer - 要拷贝的buffer对象

targetStart - 数字

sourceStart -数字

sourceEnd -数字 默认 buffer.length

var buf1 =  new buffer('abc');
var buf2 = new buffer(3);
buf1.copy(buf2);

console.log(buf2.toString());
//输出abc


缓冲区裁剪

buffer.slice(start,end);

//返回一个新的缓冲区,它和旧缓冲区指向同一块内存

var buf1 = new buffer("123456");

var buf2 = buf1.slice(0,2);

conosle.log(buf2.toString());

//打印 12

缓冲区长度

buf.length //返回buffer对象占据内存的长度

buf[index]//获取或设置指定的字节

buffer.equals(otherbuffer)//比较两个区域是否相等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: