📜  Node.js 缓冲区

📅  最后修改于: 2022-05-13 01:56:34.286000             🧑  作者: Mango

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)); 

输出: