방법 설명:
지정된 인코딩을 사용하여 버퍼의 오프셋에 문자열을 씁니다.
기록된 옥텟 수를 반환합니다.
버퍼에 전체 문자열을 넣을 공간이 충분하지 않으면 문자열의 일부만 기록됩니다.
문법:
buffer.write(문자열, [오프셋], [길이], [인코딩])
수신 매개변수:
string 문자열, 버퍼에 기록되는 데이터입니다.
오프셋 번호, 선택 사항, 기본값 0. 데이터가 버퍼에 기록되는 위치입니다.
length 숫자, 선택, 기본값: buffer.length – offset, 기록할 데이터의 길이
인코딩 문자열, 사용할 인코딩 형식, 선택 사항, 기본값은 "utf8"입니다.
예:
buf = 새 버퍼(256);
len = buf.write('u00bd u00bc = u00be', 0);
console.log(len " 바이트: " buf.toString('utf8', 0, len));
소스코드:
Buffer.prototype.write = 함수(문자열, 오프셋, 길이, 인코딩) {
// 쓰기 허용(문자열, 인코딩)
if (util.isString(offset) && util.isUndefine(length)) {
인코딩 = 오프셋;
오프셋 = 0;
// 쓰기 허용(문자열, 오프셋[, 길이], 인코딩)
} else if (isFinite(오프셋)) {
오프셋 = ~~오프셋;
if (isFinite(길이)) {
길이 = ~~길이;
} 그 밖의 {
인코딩 = 길이;
길이 = 정의되지 않음;
}
// XXX 레거시 쓰기(문자열, 인코딩, 오프셋, 길이) - v0.13에서 제거
} 그 밖의 {
if (!writeWarned) {
if(process.throwDeprecation)
새로운 오류 발생(writeMsg);
else if(process.traceDeprecation)
console.trace(writeMsg);
그 외
console.error(writeMsg);
writeWarned = true;
}
var 스왑 = 인코딩;
인코딩 = 오프셋;
오프셋 = ~~길이;
길이 = 교환;
}
var 남은 = this.length - 오프셋;
if (util.isUndefine(length) || 길이 > 남음)
길이 = 남은;
인코딩 = !!인코딩 ? (인코딩 '').toLowerCase() : 'utf8';
if (string.length > 0 && (length < 0 || 오프셋 < 0))
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('알 수 없는 인코딩: ' 인코딩);
}
리트윗;
};