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的trim,ltrim,rtrim自定义函数
Sep 21 Javascript
chrome不支持form.submit的解决方案
Apr 28 Javascript
使用BootStrap实现用户登录界面UI
Aug 10 Javascript
JSON 必知必会 观后记
Oct 27 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
Jul 31 Javascript
Vue下的国际化处理方法
Dec 18 Javascript
详解ES6中的代理模式——Proxy
Jan 08 Javascript
vscode 开发Vue项目的方法步骤
Nov 25 Javascript
Vue.js实现tab切换效果
Jul 24 Javascript
vue如何实现动态加载脚本
Feb 05 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
Apr 11 Javascript
解读Vue组件注册方式
May 15 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
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
php,不用COM,生成excel文件
2006/10/09 PHP
建立动态的WML站点(二)
2006/10/09 PHP
php利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
PHP取整数函数常用的四种方法小结
2012/07/05 PHP
php 批量替换程序的具体实现代码
2013/10/04 PHP
得到文本框选中的文字,动态插入文字的js代码
2007/03/07 Javascript
css样式标签和js语法属性区别
2013/11/06 Javascript
js去除空格的12种实用方法
2013/11/08 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
原生js实现移动开发轮播图、相册滑动特效
2015/04/17 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
vue技术分享之你可能不知道的7个秘密
2018/04/09 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
2020/03/26 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
js实现简易拖拽的示例
2020/10/26 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
2020/11/12 Javascript
uniapp微信小程序:key失效的解决方法
2021/01/20 Javascript
浅谈Pandas 排序之后索引的问题
2018/06/07 Python
详解python中的Turtle函数库
2018/11/19 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
python做反被爬保护的方法
2019/07/01 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
python实现批处理文件
2020/07/28 Python
如何利用Python写个坦克大战
2020/11/18 Python
会计与审计专业大专生求职信
2013/10/03 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书