Nodejs教程-Buffer类
Node.js提供了Buffer类来存储原始数据,类似于一个整数数组,但它对应于V8堆之外的原始内存分配。由于纯JavaScript对二进制数据的处理不够友好,因此在处理TCP流或文件系统时,需要处理八位字节流。
Buffer类是一个全局类,可以在应用程序中直接访问,无需导入buffer模块。
Node.js创建Buffers
有许多方法可以构造Node缓冲区。以下是三种常用的方法:
创建未初始化的缓冲区: 创建一个未初始化的缓冲区,长度为10个八位字节。
var buf = new Buffer(10);
从数组创建缓冲区: 从给定的数组创建一个缓冲区。
var buf = new Buffer([10, 20, 30, 40, 50]);
从字符串创建缓冲区: 从给定的字符串创建一个缓冲区,并可以指定编码类型。
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
输出:
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
输出: