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 相关文章推荐
飞鱼(shqlsl) javascript作品集
Dec 16 Javascript
IE8 引入跨站数据获取功能说明
Jul 22 Javascript
JavaScript实现的购物车效果可以运用在好多地方
May 09 Javascript
通过location.replace禁止浏览器后退防止重复提交
Sep 04 Javascript
jQuery过滤选择器经典应用
Aug 18 Javascript
老生常谈jquery中detach()和remove()的区别
Mar 02 Javascript
微信小程序 空白页重定向解决办法
Jun 27 Javascript
Vue服务器渲染Nuxt学习笔记
Jan 31 Javascript
node.js使用redis储存session的方法
Sep 26 Javascript
vue.js层叠轮播效果的实例代码
Nov 08 Javascript
JS基于ES6新特性async await进行异步处理操作示例
Feb 02 Javascript
pm2启动ssr失败的解决方法
Jun 29 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的五种设计模式
2012/09/05 PHP
php构造函数实例讲解
2013/11/13 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
2016/08/02 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
公众号SVG动画交互实战代码
2020/05/31 Javascript
python使用datetime模块计算各种时间间隔的方法
2015/03/24 Python
在Python中使用next()方法操作文件的教程
2015/05/24 Python
python实现录音小程序
2020/10/26 Python
Python数学形态学实例分析
2019/09/06 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
pyecharts在数据可视化中的应用详解
2020/06/08 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
2020/06/12 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用
2020/08/24 HTML / CSS
June Jacobs尊积帕官网:知名的spa水疗护肤品牌
2019/03/21 全球购物
出国留学计划书
2014/04/27 职场文书
租房安全协议书
2014/08/20 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
2015年教师节慰问信
2015/03/23 职场文书
保险公司2016开门红口号集锦
2015/12/24 职场文书
python运行脚本文件的三种方法实例
2022/06/25 Python
如何利用python实现Simhash算法
2022/06/28 Python