node.js中的buffer.write方法使用说明
方法说明:
将string使用指定的encoding写入到buffer的offset处。
返回写入了多少个八进制字节。
如果Buffer没有足够的空间来适应整个string,那么将只有string的部分被写入。
语法:
buffer.write(string,[offset],[length],[encoding])
接收参数:
string String,被写入buffer的数据.
offet number,可选,默认0.数据写入到buffer的位置.
length Number,可选,默认:buffer.length?offset,要写入数据的长度
encoding String,需要使用的编码格式,可选,默认为”utf8″.
例子:
buf=newBuffer(256);
len=buf.write("\u00bd+\u00bc=\u00be",0);
console.log(len+"bytes:"+buf.toString("utf8",0,len));
源码:
Buffer.prototype.write=function(string,offset,length,encoding){
//allowwrite(string,encoding)
if(util.isString(offset)&&util.isUndefined(length)){
encoding=offset;
offset=0;
//allowwrite(string,offset[,length],encoding)
}elseif(isFinite(offset)){
offset=~~offset;
if(isFinite(length)){
length=~~length;
}else{
encoding=length;
length=undefined;
}
//XXXlegacywrite(string,encoding,offset,length)-removeinv0.13
}else{
if(!writeWarned){
if(process.throwDeprecation)
thrownewError(writeMsg);
elseif(process.traceDeprecation)
console.trace(writeMsg);
else
console.error(writeMsg);
writeWarned=true;
}
varswap=encoding;
encoding=offset;
offset=~~length;
length=swap;
}
varremaining=this.length-offset;
if(util.isUndefined(length)||length>remaining)
length=remaining;
encoding=!!encoding?(encoding+"").toLowerCase():"utf8";
if(string.length>0&&(length<0||offset<0))
thrownewRangeError("attempttowritebeyondbufferbounds");
varret;
switch(encoding){
case"hex":
ret=this.hexWrite(string,offset,length);
break;
case"utf8":
case"utf-8":
ret=this.utf8Write(string,offset,length);
break;
case"ascii":
ret=this.asciiWrite(string,offset,length);
break;
case"binary":
ret=this.binaryWrite(string,offset,length);
break;
case"base64":
//Warning:maxLengthnottakenintoaccountinbase64Write
ret=this.base64Write(string,offset,length);
break;
case"ucs2":
case"ucs-2":
case"utf16le":
case"utf-16le":
ret=this.ucs2Write(string,offset,length);
break;
default:
thrownewTypeError("Unknownencoding:"+encoding);
}
returnret;
};
相关文章