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 的addEventListener()及attachEvent()区别分析
May 21 Javascript
javascript在事件监听方面的兼容性小结
Apr 07 Javascript
关于 文本框默认值 的操作js代码
Jan 12 Javascript
js删除局部变量的实现方法
Jun 25 Javascript
JavaScript事件详细讲解
Jun 27 Javascript
AngularJs html compiler详解及示例代码
Sep 01 Javascript
基于AngularJS实现的工资计算器实例
Jun 16 Javascript
JSON数据中存在单个转义字符“\”的处理方法
Jul 11 Javascript
Vue常见面试题整理【值得收藏】
Sep 20 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
Oct 14 Javascript
vue 解决路由只变化参数页面组件不更新问题
Nov 05 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
Feb 25 Vue.js
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实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
2011/04/02 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
微信小程序实现自动定位功能
2018/10/31 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
2019/06/17 Javascript
jQuery实现图片下载代码
2019/07/18 jQuery
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
2019/09/26 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
单线程JavaScript实现异步过程详解
2020/05/19 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
python迭代器的使用方法实例
2013/11/21 Python
Python中的yield浅析
2014/06/16 Python
在Python中实现贪婪排名算法的教程
2015/04/17 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
python程序 创建多线程过程详解
2019/09/23 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
Django通过dwebsocket实现websocket的例子
2019/11/15 Python
在Python中使用filter去除列表中值为假及空字符串的例子
2019/11/18 Python
python 操作mysql数据中fetchone()和fetchall()方式
2020/05/15 Python
基于Keras的格式化输出Loss实现方式
2020/06/17 Python
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
毕业生文员求职信
2013/11/03 职场文书
教师岗位职责范本
2013/12/29 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
教师岗位职责范本
2015/04/02 职场文书
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript