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创建对象的写法
Aug 29 Javascript
js完美的div拖拽实例代码
Jan 22 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
Oct 23 Javascript
javascript中arguments,callee,caller详解
Mar 16 Javascript
微信小程序  audio音频播放详解及实例
Nov 02 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
Dec 21 Javascript
JavaScript中三个等号和两个等号你了解多少
Jul 04 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
Mar 06 Javascript
ES7之Async/await的使用详解
Mar 28 Javascript
微信打开网址添加在浏览器中打开提示的办法
May 20 Javascript
JS判断数组里是否有重复元素的方法小结
May 21 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
Oct 10 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在Web开发领域的优势
2006/10/09 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
2011/05/17 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
常用PHP封装分页工具类
2017/01/14 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
如何在PHP中使用数组
2020/06/09 PHP
JavaScript 基础问答三
2008/12/03 Javascript
jQuery实用基础超详细介绍
2013/04/11 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
2016/06/01 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
vue 优化CDN加速的方法示例
2018/09/19 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
python使用str &amp; repr转换字符串
2016/10/13 Python
python如何重载模块实例解析
2018/01/25 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
Python语法分析之字符串格式化
2019/06/13 Python
python写入数据到csv或xlsx文件的3种方法
2019/08/23 Python
Python urlopen()和urlretrieve()用法解析
2020/01/07 Python
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
项目采购员岗位职责
2014/04/15 职场文书
励志演讲稿200字
2014/08/21 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
综合测评自我评价
2015/03/06 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA