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


Posted in Javascript onDecember 10, 2014

方法说明:

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

};
Javascript 相关文章推荐
CSDN轮换广告图片轮换效果
Mar 27 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
Mar 02 Javascript
jquery lazyload延迟加载技术的实现原理分析
Jan 24 Javascript
实例讲解jQuery中对事件的命名空间的运用
May 24 Javascript
JS给Array添加是否包含字符串的简单方法
Oct 29 Javascript
Angular页面间切换及传值的4种方法
Nov 04 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
Dec 07 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Dec 14 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
Aug 21 Javascript
Vue插件之滑动验证码用法详解
Apr 05 Javascript
Swiper实现导航栏滚动效果
Oct 16 Javascript
微信小程序实现倒计时功能
Nov 19 Javascript
node.js中的http.request.end方法使用说明
Dec 10 #Javascript
node.js中的emitter.on方法使用说明
Dec 10 #Javascript
node.js中的events.emitter.once方法使用说明
Dec 10 #Javascript
node.js中的emitter.emit方法使用说明
Dec 10 #Javascript
node.js中的events.emitter.removeListener方法使用说明
Dec 10 #Javascript
node.js中的events.emitter.listeners方法使用说明
Dec 10 #Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
Dec 10 #Javascript
You might like
php跨站攻击实例分析
2014/10/28 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
javascript制作幻灯片(360度全景图片)
2015/07/28 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
使用D3.js制作图表详解
2017/08/13 Javascript
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
Python 面试中 8 个必考问题
2018/11/16 Python
Python语言快速上手学习方法
2018/12/14 Python
python实现多张图片拼接成大图
2019/01/15 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
2020/06/24 Python
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
css3 响应式媒体查询的示例代码
2019/09/25 HTML / CSS
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
美国受欢迎的女性牛仔裤品牌:DL1961
2016/11/12 全球购物
运动会入场解说词
2014/02/07 职场文书
《小松树和大松树》教学反思
2014/02/20 职场文书
主持词开场白
2014/03/17 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
加强作风建设演讲稿
2014/10/24 职场文书
会议主持词开场白
2015/05/28 职场文书
高二化学教学反思
2016/02/22 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
Python极值整数的边界探讨分析
2021/09/15 Python
使用CSS实现一个搜索引擎的原理解析
2021/09/25 HTML / CSS