Node.js 缓冲区
缓冲区是 Node.js 中 Buffer 类的实例。缓冲区旨在处理二进制原始数据。缓冲区在 V8 堆之外分配原始内存。 Buffer 类是一个全局类,因此无需在应用程序中导入 Buffer 模块即可使用它。
创建缓冲区:以下是在 Node.js 中创建缓冲区的不同方法:
- 创建一个未启动的缓冲区:它创建给定大小的未启动缓冲区。
句法:
var ubuf = Buffer.alloc(5);
- 上述语法用于创建 5 个八位字节的未启动缓冲区。
- 从数组创建缓冲区:它从给定数组创建缓冲区。
句法:
var abuf = new Buffer([16, 32, 48, 64]);
- 上述语法用于从给定数组创建缓冲区。
- 从字符串创建缓冲区:它使用可选编码从给定字符串创建缓冲区。
句法:
var sbuf = new Buffer("GeeksforGeeks", "ascii");
- 上述语法用于从字符串创建 Buffer,也可以选择指定编码类型。
在 Node.js 中写入缓冲区: buf.write() 方法用于将数据写入节点缓冲区。
句法:
buf.write( string, offset, length, encoding )
buf.write() 方法用于返回写入字符串的八位字节数。如果缓冲区没有足够的空间来容纳整个字符串,它将写入字符串的一部分。
buf.write() 方法接受以下参数:
- 字符串:它指定要写入缓冲区的字符串数据。
- offset:它指定缓冲区开始写入的索引。它的默认值为 0。
- 长度:它指定要写入的字节数。它的默认值为 buffer.length。
- encoding:指定编码机制。它的默认值为“utf-8”。
示例:创建一个包含以下代码的 buffer.js 文件。
javascript
// Write JavaScript code here
cbuf = new Buffer(256);
bufferlen = cbuf.write("Learn Programming with GeeksforGeeks!!!");
console.log("No. of Octets in which string is written : "+ bufferlen);
javascript
// Write JavaScript code here
rbuf = new Buffer(26);
var j;
for (var i = 65, j = 0; i < 90, j < 26; i++, j++) {
rbuf[j] = i ;
}
console.log( rbuf.toString('ascii'));
javascript
// Write JavaScript code here
rbuf = new Buffer(26);
var j;
for (var i = 65, j = 0; i < 90, j < 26; i++, j++) {
rbuf[j] = i ;
}
console.log( rbuf.toString('utf-8', 3, 9));
输出:
从缓冲区读取: buf.toString() 方法用于从节点缓冲区读取数据。
句法:
buf.toString( encoding, start, end )
buf.toString() 方法接受以下参数:
- encoding:指定编码机制。它的默认值为“utf-8”。
- start:指定开始读取的索引。它的默认值为 0。
- end:指定结束读取的索引。它的默认值是完整缓冲区。
示例 1:创建一个包含以下代码的 buffer.js 文件。
javascript
// Write JavaScript code here
rbuf = new Buffer(26);
var j;
for (var i = 65, j = 0; i < 90, j < 26; i++, j++) {
rbuf[j] = i ;
}
console.log( rbuf.toString('ascii'));
输出:
示例 2:从 Node.js 缓冲区读取数据,指定读取的起点和终点。创建一个包含以下代码的 buffer.js 文件。
javascript
// Write JavaScript code here
rbuf = new Buffer(26);
var j;
for (var i = 65, j = 0; i < 90, j < 26; i++, j++) {
rbuf[j] = i ;
}
console.log( rbuf.toString('utf-8', 3, 9));
输出: