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 相关文章推荐
javascript下IE与FF兼容函数收集
Sep 17 Javascript
javascript 获取模态窗口的滚动位置代码
Aug 06 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
May 16 Javascript
JavaScript实现点击按钮就复制当前网址
Dec 14 Javascript
初步使用Node连接Mysql数据库
Mar 03 Javascript
WebView启动支付宝客户端支付失败的问题小结
Jan 11 Javascript
webpack入门必知必会
Jan 16 Javascript
原生javascript实现文件异步上传的实例讲解
Oct 26 Javascript
原生JS写Ajax的请求函数功能
Dec 22 Javascript
微信小程序实现文件、图片上传功能
Aug 18 Javascript
Vue数据绑定实例写法
Aug 06 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
Sep 27 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
5种PHP创建数组的实例代码分享
2014/01/17 PHP
完美解决thinkphp验证码出错无法显示的方法
2014/12/09 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
PHP目录操作实例总结
2016/09/27 PHP
php编程实现简单的网页版计算器功能示例
2017/04/26 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
浅谈PHP各环境下的伪静态配置
2019/03/13 PHP
PHP基础之输出缓冲区基本概念、原理分析
2019/06/19 PHP
JavaScript中的事件处理
2008/01/16 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
2016/08/01 Javascript
jQuery DateTimePicker 日期和时间插件示例
2017/01/22 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
2018/07/26 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
[02:28]DOTA2亚洲邀请赛附加赛 RECAP赛事回顾
2015/01/29 DOTA
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
Django验证码的生成与使用示例
2017/05/20 Python
python实现批量按比例缩放图片效果
2018/03/30 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
使用python 写一个静态服务(实战)
2019/06/28 Python
深入了解python中元类的相关知识
2019/08/29 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
2019/10/27 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
说出数据连接池的工作机制是什么?
2013/04/19 面试题
小学庆六一主持词
2015/06/30 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
初中团支书竞选稿
2015/11/21 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript