node.js中的buffer.write方法使用说明

前端技术 2023/09/03 JavaScript

方法说明:

将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 = 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) {
  // allow write(string, encoding)
  if (util.isString(offset) && util.isUndefined(length)) {
    encoding = offset;
    offset = 0;
  // allow write(string, offset[, length], encoding)
  } else if (isFinite(offset)) {
    offset = ~~offset;
    if (isFinite(length)) {
      length = ~~length;
    } else {
      encoding = length;
      length = undefined;
    }
  // XXX legacy write(string, encoding, offset, length) - remove in v0.13
  } else {
    if (!writeWarned) {
      if (process.throwDeprecation)
        throw new Error(writeMsg);
      else if (process.traceDeprecation)
        console.trace(writeMsg);
      else
        console.error(writeMsg);
      writeWarned = true;
    }
    var swap = encoding;
    encoding = offset;
    offset = ~~length;
    length = swap;
  }
  var remaining = this.length - offset;
  if (util.isUndefined(length) || length > remaining)
    length = remaining;
  encoding = !!encoding ? (encoding + \'\').toLowerCase() : \'utf8\';
  if (string.length > 0 && (length < 0 || offset < 0))
    throw new RangeError(\'attempt to write beyond buffer bounds\');
  var ret;
  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: maxLength not taken into account in base64Write
      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:
      throw new TypeError(\'Unknown encoding: \' + encoding);
  }
  return ret;
};

本文地址:https://www.stayed.cn/item/7119

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。