Node.js提供了Buffer类来存储原始数据,类似于一个整数数组,但它对应于V8堆之外的原始内存分配。由于纯JavaScript对二进制数据的处理不够友好,因此在处理TCP流或文件系统时,需要处理八位字节流。

Buffer类是一个全局类,可以在应用程序中直接访问,无需导入buffer模块。

Node.js创建Buffers

有许多方法可以构造Node缓冲区。以下是三种常用的方法:

  1. 创建未初始化的缓冲区: 创建一个未初始化的缓冲区,长度为10个八位字节。

    var buf = new Buffer(10);
  2. 从数组创建缓冲区: 从给定的数组创建一个缓冲区。

    var buf = new Buffer([10, 20, 30, 40, 50]);
  3. 从字符串创建缓冲区: 从给定的字符串创建一个缓冲区,并可以指定编码类型。

    var buf = new Buffer("Simply Easy Learning", "utf-8");

Node.js写入缓冲区

以下是写入Node缓冲区的方法:

语法:

buf.write(string[, offset][, length][, encoding]);

参数解释:

  • string: 要写入缓冲区的字符串数据。
  • offset: 缓冲区中开始写入的索引。默认值为0。
  • length: 要写入的字节数。默认为buffer的长度。
  • encoding: 使用的编码。默认为'utf8'编码。

写入缓冲区的返回值:

该方法返回写入的八位字节数。如果缓冲区空间不足以容纳整个字符串,它将只写入部分字符串。

让我们来看一个例子:

创建一个名为"main.js"的JavaScript文件,其中包含以下代码:

buf = new Buffer(256);
len = buf.write("Simply Easy Learning");
console.log("Octets written : " + len);

在Node.js命令提示符中执行以下代码:

node main.js

输出:

1.png

Node.js从缓冲区读取数据

以下是从Node缓冲区中读取数据的方法。

语法:

buf.toString([encoding][, start][, end]);

参数解释:

  • encoding: 指定要使用的编码。默认为'utf8'编码。
  • start: 开始读取的索引,默认为0。
  • end: 结束读取的索引,默认为整个缓冲区。

从缓冲区读取的返回值:

该方法解码并返回使用指定字符集编码的缓冲区数据的字符串。

让我们来看一个例子:

buf = new Buffer(26);
for (var i = 0; i < 26; i++) {
  buf[i] = i + 97;
}
console.log(buf.toString('ascii'));    // 输出: abcdefghijklmnopqrstuvwxyz
console.log(buf.toString('ascii', 0, 5));  // 输出: abcde
console.log(buf.toString('utf8', 0, 5));  // 输出: abcde
console.log(buf.toString(undefined, 0, 5)); // 默认使用'utf8'编码, 输出: abcde

在Node.js命令提示符中执行以下代码:

node main.js

输出:

2.png

标签: Nodejs, Nodejs安装教程, Nodejs教程, node, nodejs入门, nodejs入门教程, nodejs进阶, nodejs学习教程, nodejs开发, nodejs指南, nodejs学习指南, nodejs环境配置, nodejs框架