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 相关文章推荐
会自动逐行上升的文本框
Jun 30 Javascript
Jquery 绑定时间实现代码
May 03 Javascript
图标线性回归斜着移动到指定的位置
Aug 16 Javascript
高效的获取当前元素是父元素的第几个子元素
Oct 15 Javascript
angularjs的一些优化小技巧
Dec 06 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
Jul 22 Javascript
React-Router如何进行页面权限管理的方法
Dec 06 Javascript
10 种最常见的 Javascript 错误(频率最高)
Feb 08 Javascript
关于HTML5的data-*自定义属性的总结
May 05 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
Aug 25 Javascript
vue prop传值类型检验方式
Jul 30 Javascript
vue 实现element-ui中的加载中状态
Nov 11 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运行时强制显示出错信息的代码
2011/04/20 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
2009/08/04 Javascript
firefox火狐浏览器与与ie兼容的2个问题总结
2010/07/20 Javascript
jquery win 7透明弹出层效果的简单代码
2013/08/06 Javascript
jquery如何通过name名称获取当前name的value值
2013/12/20 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
Nodejs如何复制文件
2016/03/09 NodeJs
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
详解Vue2 无限级分类(添加,删除,修改)
2017/03/07 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
2017/08/16 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
2018/03/05 Javascript
JavaScript代码实现txt文件的上传预览功能
2018/03/27 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
详解python多线程之间的同步(一)
2019/04/03 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
Python学习之time模块的基本使用
2021/01/17 Python
numpy实现RNN原理实现
2021/03/02 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
如何在网站上添加谷歌定位信息
2016/04/16 HTML / CSS
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
自我评价的正确写法
2013/09/19 职场文书
化工专业推荐信范文
2013/11/28 职场文书
高中军训感想800字
2014/02/23 职场文书
小学生环保演讲稿
2014/04/25 职场文书
反腐倡廉演讲稿
2014/05/22 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
政协会议宣传标语
2014/10/09 职场文书
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers