node.js中缓冲区--Buffer

简介: Node.js中Buffer简介:JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。但在处理像TCP流或文件流时,必须使用到二进制数据。

Node.js中Buffer简介:


JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。
但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。
在 Node.js 中,Buffer 类是随 Node 内核一起发布的核心库。Buffer 库为 Node.js 带来了一种存储原始数据的方法,可以让 Node.js 处理二进制数据,每当需要在 Node.js 中处理I/O操作中移动的数据时,就有可能使用 Buffer 库。原始数据存储在 Buffer 类的实例中。一个 Buffer 类似于一个整数数组,但它对应于 V8 堆内存之外的一块原始内存。

Buffer常用API


/*1.Node.js中Buffer是一个典型的javascript与c++结合的模块,它将性能相关的部分用              c++实现,将非性能的部分用javascript实现。 
  2.纯javascript对字符友好但是i无法很好的处理二进制数据,在java与node中buffer中存 储的是二进制数据。当我们面对TCP流或者文件系统时,是需要处理八位流的,因此在Node.js中定义了一个Buffer类,该类用来创建一个专门的存放二进制数据的缓冲区。 
  3.代码演示:*///buffer的创建,一共有三种创建方式:从不同维度进行创建,1创建长度为n的buffer实例,创建数组为arr的buffer实例,创建字符串str的buffer实例
 //<1创建buffer实例
   var buff;
 //buff = new Buffer(n);//创建长度为n的Buffer实例
 //buff = new Buffer(arr);//创建数组为arr的buffer实例
 //buff = new Buffer(str,encoding);//创建字符串Str的Buffer实例
   buff = new Buffer(10);
   buff = new Buffer([10,20,30,40,50]);
   buff = new Buffer("www.funoob.com","utf-8");
//<2写入缓冲区
   buff = new Buffer(256);
   len = buff.write("www.runoob.com");
   console.log("写入字节数为:"+ len);
//<3从缓冲区中读数据buf = new Buffer(26);
for(var i = 0 ; i < 26 ; i++) {    
    buf[i]=+97;
}
console.log(buf.toString('ascii'));
console.log(buf.toString('ascii',0,5));//截前不截后
console.log(buf.toString('utf8',0,5));
console.log(buf.toString(undefined,0,5));//使用utf8编码,并输出abcde
//<4将Buffer转换为json对象,语法如下:buf.toJson()
var buf = new Buffer("www.runoob.com");
var json = buf.toJSON(buf);
console.log(json);
var buf = new Buffer('我爱 node.js');
var json = buf.toJSON(buf);
console.log(json);
//<5 缓冲区合并
var buffer1 = new Buffer('菜鸟教程');
var buffer2 = new Buffer('www.runoob.com');
var buffer3 = Buffer.concat([buffer1,buffer2]);
console.log("buffer3 的内容是: "+buffer3.toString());
//<6 缓冲区比较
/*  Node Buffer 比较的函数如下所示 
    buf.compare(otherBuffer)*/
var buff1 = new Buffer('ABC');
var buff2 = new Buffer('ABCD');
var result = buff1.compare(buff2);
if(result < 0) {   
    console.log(buff1 + "在" + buff2 + "之前");
}else if(result == 0) { 
    console.log(buff1 + "在" + buff2 + "相同");
}else {   
    console.log(buff1 + "在" + buff2 + "之后");
}
//<7 拷贝缓冲区
/*  语法为 buf.copy(targetBuffer) 将调用copy方法
    的缓冲区中内容拷贝到targetBuffer中
*/
var buffer1 = new Buffer('ABC');
var buffer2 = new Buffer(3);
buffer1.copy(buffer2);
console.log("buffer2's content is : "+ buffer2.toString());
//<8 缓冲区裁剪
var buffer1 = new Buffer('runoob');
var buffer2 = buffer1.slice(0,2);//裁剪是包前不包后end索引指向的元素并不被包含在裁剪之后的内容当中
console.log("buffer2's content is : "+buffer2.toString());
//<9 缓冲区长度
/*缓冲区长度计算语法如下所示: 
  buf.length; 
  返回值:  返回buffer对象所占据的内存长度
*/
var buffer = new Buffer('我爱 www.runoob.com ');
var len = buffer.length;//计算的是buff中字节的个数,而非传统的java中length的字符长度
console.log("buffer's length is : "+len);

注意:以上代码可以直接拷贝至node.js文件当中

运行结果

$ node buff.js
写入字节数为:14
abcdefghijklmnopqrstuvwxyz
abcde
abcde
abcde
{ type: 'Buffer',
  data: [ 119, 119, 119, 46, 114, 117, 110, 111, 111, 98, 46, 99, 111, 109 ] }
{ type: 'Buffer',
  data: [ 230, 136, 145, 231, 136, 177, 32, 110, 111, 100, 101, 46, 106, 115 ] }

buffer3 的内容是: 菜鸟教程www.runoob.com
ABC在ABCD之前
buffer2's content is : ABC
buffer2's content is : ru
buffer's length is : 22

完。

博客搬家:大坤的个人博客
欢迎评论哦~

目录
相关文章
|
6月前
|
缓存 JavaScript 前端开发
【Node系列】Buffer详解
JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。 但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。 Node.js中的Buffer是一个全局对象,属于固有(built-in)类型的全局变量,不需要使用require函数导入。它允许直接操作原始内存,主要用于处理二进制数据流。Buffer实例对象的结构和整数数组很像,但Buffer的大小是固定的且在V8堆外分配物理内存。
63 2
|
6月前
|
消息中间件 Web App开发 JavaScript
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
136 0
|
6月前
|
JavaScript 前端开发 API
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)(下)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
73 0
|
28天前
|
存储 JSON JavaScript
Node.js Buffer(缓冲区)
10月更文挑战第4天
20 4
|
5月前
|
存储 JSON JavaScript
Node.js Buffer(缓冲区)
Node.js Buffer(缓冲区)
35 1
|
6月前
|
JavaScript 网络协议 数据处理
Node.js中的Buffer与Stream:深入解析与使用
【4月更文挑战第30天】本文深入解析了Node.js中的Buffer和Stream。Buffer是处理原始数据的全局对象,适用于TCP流和文件I/O,其大小在V8堆外分配。创建Buffer可通过`alloc`和`from`方法,它提供了读写、切片和转换等操作。Stream是处理流式数据的抽象接口,分为可读、可写、双工和转换四种类型,常用于处理大量数据而无需一次性加载到内存。通过监听事件和调用方法,如读取文件的可读流示例,可以实现高效的数据处理。理解和掌握Buffer及Stream能提升Node.js应用的性能。
|
6月前
|
JavaScript
Node.js之Buffer(缓冲器)
Node.js之Buffer(缓冲器)
|
2月前
|
JavaScript
NodeJs的安装
文章介绍了Node.js的安装步骤和如何创建第一个Node.js应用。包括从官网下载安装包、安装过程、验证安装是否成功,以及使用Node.js监听端口构建简单服务器的示例代码。
NodeJs的安装
|
30天前
|
JavaScript 开发工具 git
已安装nodejs但是安装hexo报错
已安装nodejs但是安装hexo报错
21 2
|
2月前
|
存储 JavaScript 前端开发
Node 版本控制工具 NVM 的安装和使用(Windows)
本文介绍了NVM(Node Version Manager)的Windows版本——NVM for Windows的安装和使用方法,包括如何安装Node.js的特定版本、列出已安装版本、切换使用不同版本的Node.js,以及其他常用命令,以实现在Windows系统上对Node.js版本的便捷管理。
Node 版本控制工具 NVM 的安装和使用(Windows)