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
Feb 25 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
May 12 Javascript
mailto的使用技巧分享
Dec 21 Javascript
jQuery图片滚动图片的效果(另类实现)
Jun 02 Javascript
JS中获取数据库中的值的方法
Jul 14 Javascript
js 动态修改css文件用到了cssRule
Aug 20 Javascript
jQuery的deferred对象详解
Nov 12 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
Mar 29 Javascript
vue watch深度监听对象实现数据联动效果
Aug 16 Javascript
jQuery内容选择器与表单选择器实例分析
Jun 28 jQuery
ES6 Promise对象概念及用法实例详解
Oct 15 Javascript
JS实现简单打字测试
Jun 24 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
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
2011/11/21 PHP
PHP程序员必须清楚的问题汇总
2014/12/18 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
php错误日志简单配置方法
2016/07/11 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
使用javascript实现雪花飘落的效果
2015/01/13 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
2017/02/15 Javascript
js脚本编写简单刷票投票系统
2017/06/27 Javascript
Vue中全局变量的定义和使用
2019/06/05 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
小程序实现左滑删除的效果的实例代码
2020/10/19 Javascript
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
详解python数据结构和算法
2019/04/18 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
python计算二维矩形IOU实例
2020/01/18 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
JBL英国官网:JBL UK
2018/07/04 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
如何查找网页漏洞
2016/06/22 面试题
大学三年的自我评价
2013/12/25 职场文书
捐助倡议书范文
2014/04/15 职场文书
2014年党支部工作总结
2014/11/13 职场文书