📅  最后修改于: 2020-12-24 03:41:40             🧑  作者: Mango
Node.js提供Buffer类来存储类似于整数数组的原始数据,但对应于V8堆外部的原始内存分配。之所以使用Buffer类,是因为纯JavaScript不适用于二进制数据。因此,在处理TCP流或文件系统时,必须处理八位位组流。
缓冲区类是全局类。可以在应用程序中访问它,而无需导入缓冲模块。
有很多方法可以构造节点缓冲区。以下是三种最常用的方法:
以下是写入节点缓冲区的方法:
句法:
buf.write(string[, offset][, length][, encoding])
参数说明:
字符串:它指定要写入缓冲区的字符串数据。
offset:指定要开始写入的缓冲区的索引。默认值为0。
length:指定要写入的字节数。默认为buffer.length
encoding:使用编码。 'utf8'是默认编码。
从写缓冲区返回值:
此方法用于返回写入的八位位组数。如果缓冲区不足以容纳整个字符串,则它将写入字符串的一部分。
让我们举个例子:
创建一个名为“ main.js”的JavaScript文件,其中包含以下代码:
文件:main.js
buf = new Buffer(256);
len = buf.write("Simply Easy Learning");
console.log("Octets written : "+ len);
打开Node.js命令提示符并执行以下代码:
node main.js
输出:
以下是从节点缓冲区读取数据的方法。
句法:
buf.toString([encoding][, start][, end])
参数说明:
encoding:指定要使用的编码。 'utf8'是默认编码
start:指定开始读取的起始索引,默认为0。
end:指定要结束读取的结束索引,默认为完整缓冲区。
返回从缓冲区读取的值:
此方法从使用指定字符集编码编码的缓冲区数据中解码并返回字符串。
让我们举个例子:
文件:main.js
buf = new Buffer(26);
for (var i = 0 ; i < 26 ; i++) {
buf[i] = i + 97;
}
console.log( buf.toString('ascii')); // outputs: abcdefghijklmnopqrstuvwxyz
console.log( buf.toString('ascii',0,5)); // outputs: abcde
console.log( buf.toString('utf8',0,5)); // outputs: abcde
console.log( buf.toString(undefined,0,5)); // encoding defaults to 'utf8', outputs abcde
打开Node.js命令提示符并执行以下代码:
node main.js
输出: