メソッド説明:
指定されたエンコードを使用して、バッファーのオフセットに文字列を書き込みます。
いくつのオクタルバイトが書き込まれているかを返します。
バッファに文字列全体を収容するのに十分なスペースがない場合、文字列のみが書き込まれます。
文法:
コードコピーは次のとおりです。
buffer.write(string、[offset]、[length]、[encoding])
パラメーターを受信:
文字列文字列、バッファーに書き込まれたデータ。
提供番号、オプション、デフォルト0。データはバッファーの場所に書き込まれます。
長さ番号、オプション、デフォルト:buffer.lengthオフセット、記述されるデータの長さ
エンコード文字列、使用する必要があるエンコード形式、オプション、デフォルトは「UTF8」です。
例:
コードコピーは次のとおりです。
buf = new Buffer(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){
//書き込みを許可(文字列、エンコード)
if(util.isstring(offset)&& util.isundefined(length)){
encoding = offset;
オフセット= 0;
//書き込みを許可(string、offset [、length]、エンコード)
} else if(isfinite(offset)){
offset = ~~ offset;
if(isfinite(length)){
長さ= ~~長さ;
} それ以外 {
encoding = length;
長さ=未定義;
}
// xxxレガシー書き込み(文字列、エンコード、オフセット、長さ) - v0.13で削除
} それ以外 {
if(!writewarned){
if(process.throwdeprecation)
新しいエラー(writemsg)をスローします。
else if(process.tracedeprecation)
console.trace(writemsg);
それ以外
console.error(writemsg);
writewarned = true;
}
var swap = encoding;
encoding = offset;
offset = ~~長さ;
length = swap;
}
var残り= this.length -offset;
if(util.isundefined(length)|| length>残り)
長さ=残り;
エンコード= !!エンコード? (エンコード + '').tolowercase(): 'utf8';
if(string.length> 0 &&(length <0 || offset <0)))
新しいrasinError( 'バッファーの境界を超えて書き込もうとする試み');
var ret;
switch(encoding){
ケース「ヘックス」:
ret = this.hexwrite(string、offset、length);
壊す;
ケース 'UTF8':
ケース 'UTF-8':
ret = this.utf8write(string、offset、length);
壊す;
ケース「ASCII」:
ret = this.asciiwrite(string、offset、length);
壊す;
ケース「バイナリ」:
ret = this.binarywrite(string、offset、length);
壊す;
ケース 'base64':
//警告:base64writeでは考慮されていません
ret = this.base64write(string、offset、length);
壊す;
ケース「UCS2」:
ケース「UCS-2」:
ケース 'utf16le':
ケース「UTF-16LE」:
ret = this.ucs2write(string、offset、length);
壊す;
デフォルト:
新しいTypeError( '不明なエンコード:' +エンコード);
}
返品返品。
};