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 delete 使用示例代码
Mar 29 Javascript
jQuery遍历Table应用示例
Apr 09 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
Mar 13 Javascript
js实现发送验证码后的倒计时功能
May 28 Javascript
js实现点击获取验证码倒计时效果
Jan 28 Javascript
JS中frameset框架弹出层实例代码
Apr 01 Javascript
js eval函数使用,js对象和字符串互转实例
Mar 06 Javascript
Node.js使用NodeMailer发送邮件实例代码
Mar 06 Javascript
微信小程序 弹窗自定义实例代码
Mar 08 Javascript
用Webpack构建Vue项目的实践
Nov 07 Javascript
解决vue路由name同名,路由重复的问题
Aug 05 Javascript
详解vue 组件注册
Nov 20 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
APMServ使用说明
2006/10/23 PHP
用PHP读取和编写XML DOM的实现代码
2011/02/03 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
基于jquery的分页控件(C#)
2011/01/06 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
JavaScipt中栈的实现方法
2016/02/17 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
JS中用EL表达式获取上下文参数值的方法
2018/03/28 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
Vue实现简单分页器
2018/12/29 Javascript
通过js给网页加上水印背景实例
2019/06/17 Javascript
vue-router重写push方法,解决相同路径跳转报错问题
2020/08/07 Javascript
理解JavaScript中的对象
2020/08/25 Javascript
浅析Python函数式编程
2018/10/06 Python
Python3.5装饰器原理及应用实例详解
2019/04/30 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
python基于socket模拟实现ssh远程执行命令
2020/12/05 Python
python实现计算器简易版
2020/12/17 Python
美国在线购买内衣网站:HerRoom
2020/02/22 全球购物
Python如何定义一个函数
2015/09/01 面试题
自荐信格式的六要素
2013/09/21 职场文书
机电一体化专业应届生求职信
2013/11/27 职场文书
项目合作协议书范本
2014/04/16 职场文书
实习指导老师评语
2014/04/26 职场文书
推广活动策划方案
2014/08/23 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
MySQL 聚合函数排序
2021/07/16 MySQL
「偶像大师 MILLION LIVE!」七尾百合子手办开订
2022/03/21 日漫
「约定的梦幻岛」作画发布诺曼生日新绘
2022/03/21 日漫