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

  方法说明:

  将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;

  };