方法說明:
將string使用指定的encoding寫入到buffer的offset處。
傳回寫入了多少個八進位位元組。
如果Buffer沒有足夠的空間來適應整個string,那麼將只有string的部分被寫入。
文法:
buffer.write(string, [offset], [length], [encoding])
接收參數:
string 而已寫入buffer的資料.
offet number,可選,預設0.資料寫入至buffer的位置.
length Number,可選,預設:buffer.length – offset,要寫入資料的長度
encoding String,需要使用的編碼格式,可選,預設為」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(字串, 偏移量, 長度, 編碼) {
// 允許寫入(字串, 編碼)
if (util.isString(offset) && util.isUndefined(length)) {
編碼=偏移量;
偏移量 = 0;
// 允許寫入(字串, 偏移量[, 長度], 編碼)
} else if (isFinite(offset)) {
偏移量 = ~~偏移量;
if (isFinite(長度)) {
長度 = ~~長度;
} 其他 {
編碼=長度;
長度=未定義;
}
// XXX 舊版 write(字串、編碼、偏移量、長度) - 在 v0.13
中刪除
} 其他 {
if (!writeWarned) {
if (process.throwDeprecation)
拋出新錯誤(writeMsg);
else if (process.traceDeprecation)
console.trace(writeMsg);
其他
console.error(writeMsg);
writeWarned = true;
}
var swap = 編碼;
編碼=偏移量;
偏移量 = ~~長度;
長度=交換;
}
var剩餘 = this.length - 偏移量;
if (util.isUndefined(length) || 長度 > 剩餘)
長度=剩餘;
編碼=! !編碼? (編碼 '').toLowerCase() : 'utf8';
if (string.length > 0 && (長度
throw new RangeError('嘗試寫入超出緩衝區範圍');
var ret;
開關(編碼){
案例「十六進位」:
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('未知編碼:'編碼);
}
回傳 ret;
};