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 相关文章推荐
商城常用滚动的焦点图效果代码简单实用
Mar 28 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
Oct 16 Javascript
使用RequireJS优化JavaScript引用代码的方法
Jul 01 Javascript
全面了解JS中的匿名函数
Jun 29 Javascript
JS获取当前页面名称的简单实例
Aug 19 Javascript
浅析jQuery操作select控件的取值和设值
Dec 07 Javascript
详解Angular2 之 结构型指令
Jun 21 Javascript
Angularjs实现下拉框联动的示例代码
Aug 22 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
Apr 24 Javascript
jQuery子选择器与可见性选择器实例分析
Jun 28 jQuery
JavaScript实现PC端横向轮播图
Feb 07 Javascript
JS开发前端团队展示控制器来为成员引流
Aug 14 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小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
PHP读取文件并可支持远程文件的代码分享
2012/10/03 PHP
深入php处理整数函数的详解
2013/06/09 PHP
实现获取http内容的php函数分享
2014/02/16 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
PHP实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
php验证手机号码
2015/11/11 PHP
PHP中的正则表达式实例详解
2017/04/25 PHP
PHP实现一维数组与二维数组去重功能示例
2018/05/24 PHP
jQuery $.get 的妙用 访问本地文本文件
2012/07/12 Javascript
别了 JavaScript中的isXX系列
2012/08/01 Javascript
js去除空格的12种实用方法
2013/11/08 Javascript
JS延迟加载加快页面打开速度示例代码
2013/12/30 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
JS实现适合于后台使用的动画折叠菜单效果
2015/09/21 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
利用Python批量生成任意尺寸的图片
2016/08/29 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
python ETL工具 pyetl
2020/06/07 Python
Python操作word文档插入图片和表格的实例演示
2020/10/25 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
2020/12/07 Python
django中ImageField的使用详解
2020/12/21 Python
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
保护环境的建议书
2014/03/12 职场文书
2014年手术室工作总结
2014/11/26 职场文书
商场广播稿范文
2015/08/19 职场文书
《给予树》教学反思
2016/03/03 职场文书
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js