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; };