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 相关文章推荐
HTML中事件触发列表与解说
Jul 09 Javascript
利用javascript移动div层-javascript 拖动层
Mar 22 Javascript
javascript函数中的arguments参数
Aug 01 Javascript
给应用部分的js代码设定一个统一的入口
Jun 15 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
Feb 05 Javascript
js 获取当前web应用的上下文路径实现方法
Aug 19 Javascript
jQuery实现的自适应焦点图效果完整实例
Aug 24 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
Dec 06 Javascript
基于node.js依赖express解析post请求四种数据格式
Feb 13 Javascript
分享19个JavaScript 有用的简写写法
Jul 07 Javascript
解决vue页面渲染但dom没渲染的操作
Jul 27 Javascript
JavaScript架构localStorage特殊场景下二次封装操作
Jun 21 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弱类型的安全问题详细总结
2016/09/25 PHP
php版交通银行网银支付接口开发入门教程
2016/09/26 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
javascript html 静态页面传参数
2009/04/10 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
洛杉矶时尚女装系列:J.ING US
2019/03/17 全球购物
英国儿童设计师服装和玩具购物网站:Zac & Lulu
2020/10/19 全球购物
英语专业学子个人的自我评价
2013/10/02 职场文书
专科毕业生自我鉴定
2013/12/01 职场文书
军训的自我鉴定
2013/12/10 职场文书
医院总经理岗位职责
2014/02/04 职场文书
科技之星事迹材料
2014/06/02 职场文书
店铺转让协议书
2015/01/29 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
pytorch 使用半精度模型部署的操作
2021/05/24 Python
代码解析React中setState同步和异步问题
2021/06/03 Javascript