メソッドの説明:
指定されたエンコーディングを使用して、バッファのオフセットに文字列を書き込みます。
書き込まれたオクテット数を返します。
バッファに文字列全体を収めるのに十分なスペースがない場合は、文字列の一部のみが書き込まれます。
文法:
buffer.write(文字列, [オフセット], [長さ], [エンコーディング])
パラメータを受信します:
string バッファに書き込まれるデータの文字列。
オフセット番号、オプション、デフォルトは 0。データがバッファに書き込まれる場所。
length 数値、オプション、デフォルト:buffer.length – オフセット、書き込まれるデータの長さ
エンコード文字列、使用するエンコード形式、オプション、デフォルトは「utf8」です。
例:
buf = 新しいバッファ(256);
len = buf.write('u00bd u00bc = u00be', 0);
console.log(len " バイト: " buf.toString('utf8', 0, len));
ソースコード:
Buffer.prototype.write = function(文字列、オフセット、長さ、エンコーディング) {
// 書き込みを許可します(文字列、エンコーディング)
if (util.isString(offset) && util.isUnknown(length)) {
エンコーディング = オフセット;
オフセット = 0;
// 書き込みを許可します(文字列, オフセット[, 長さ], エンコーディング)
else if (isFinite(offset)) {
オフセット = ~~オフセット;
if (isFinite(length)) {
長さ = ~~長さ;
} else {
エンコーディング = 長さ;
長さ = 未定義;
}
// XXX レガシー write(文字列、エンコーディング、オフセット、長さ) - v0.13 で削除
} else {
if (!writeWarned) {
if (process.throwDeprecation)
throw new Error(writeMsg);
else if (process.traceDeprecation)
console.trace(writeMsg);
それ以外
console.error(writeMsg);
writeWarned = true;
}
var swap = エンコーディング;
エンコーディング = オフセット;
オフセット = ~~長さ;
長さ = 交換;
}
残りの変数 = this.length - オフセット;
if (util.isUnknown(length) || 長さ > 残り)
長さ = 残り;
エンコーディング = !!エンコーディング ? (エンコーディング '').toLowerCase() : 'utf8';
if (string.length > 0 && (length
throw new RangeError('バッファ境界を超えて書き込みを試行');
var ret;
スイッチ (エンコーディング) {
ケース '16 進数':
ret = this.hexWrite(文字列, オフセット, 長さ);
休憩;
ケース 'utf8':
ケース 'utf-8':
ret = this.utf8Write(文字列, オフセット, 長さ);
休憩;
ケース 'ascii':
ret = this.asciiWrite(文字列, オフセット, 長さ);
休憩;
ケース 'バイナリ':
ret = this.binaryWrite(文字列, オフセット, 長さ);
休憩;
ケース 'base64':
// 警告:base64Write
では maxLength は考慮されません
ret = this.base64Write(文字列, オフセット, 長さ);
休憩;
ケース 'ucs2':
ケース 'ucs-2':
ケース 'utf16le':
ケース 'utf-16le':
ret = this.ucs2Write(文字列, オフセット, 長さ);
休憩;
デフォルト:
throw new TypeError('不明なエンコーディング: 'エンコーディング);
}
return ret;
};