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 相关文章推荐
js可突破windows弹退效果代码
Aug 09 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
Dec 16 Javascript
基于jQuery实现自动轮播旋转木马特效
Nov 02 Javascript
jQuery与JS加载事件用法分析
Sep 04 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
Jan 10 Javascript
jQuery实现图片滑动效果
Mar 08 Javascript
js获取ip和地区
Mar 10 Javascript
很棒的vue弹窗组件
May 24 Javascript
Layui给switch添加响应事件的例子
Sep 03 Javascript
layui实现二维码弹窗、并下载到本地的方法
Sep 25 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
Sep 16 Javascript
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
Jun 15 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
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
php中json_encode中文编码问题分析
2011/09/13 PHP
PHP 面向对象详解
2012/09/13 PHP
php统计时间和内存使用情况示例分享
2014/03/13 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
javascript Select标记中options操作方法集合
2008/10/22 Javascript
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
js Select下拉列表框进行多选、移除、交换内容的具体实现方法
2013/08/13 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
2016/02/29 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
vue ssr+koa2构建服务端渲染的示例代码
2020/03/23 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
跟老齐学Python之dict()的操作方法
2014/09/24 Python
Python多线程实现同步的四种方式
2017/05/02 Python
python爬虫基础教程:requests库(二)代码实例
2019/04/09 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
Python连接mysql数据库及简单增删改查操作示例代码
2020/08/03 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
linux面试题参考答案(11)
2016/11/26 面试题
致长跑运动员广播稿
2014/01/31 职场文书
大学生创业策划书
2014/02/02 职场文书
升旗仪式演讲稿
2014/05/08 职场文书
商场促销活动总结
2014/07/10 职场文书
年度优秀员工获奖感言
2014/08/15 职场文书
优秀党员个人总结
2015/02/14 职场文书
二十年同学聚会感言
2015/07/30 职场文书