Node.js Buffer(缓冲区) – 创建,写入和读取

Node.js缓冲区

Node.js缓冲区– Node.js缓冲区是一个类,可帮助处理和使用八位位组流。在处理TCP数据流和文件系统操作时,通常会出现八位字节流。

分配给缓冲区的原始内存在Node.js V8堆内存之外。

在本教程中,我们将学习如何

  • 创建缓冲区

  • 将数据写入缓冲区

  • 从缓冲区读取数据。

Node.js –创建缓冲区

在Node.js中创建缓冲区的方法有很多种。我们将一个一个地研究它们。

指定长度的缓冲区

要创建指定长度的缓冲区,请使用Buffer。allocUnsafe(int)方法。

语法

Buffer.allocUnsafe(bufferLength);
const buf1 = Buffer.allocUnsafe(10);

bufferLength是一个整数,指定要创建的缓冲区的长度。

创建的缓冲区未初始化,这意味着它可以包含垃圾值。您可以使用fill()或write()方法覆盖垃圾值。

指定长度的零填充缓冲区

若要创建指定长度的零填充缓冲区,请使用Buffer.alloc(int)方法。
语法

Buffer.alloc(bufferLength);
const buf1 = Buffer.alloc(10);

 bufferLength是一个整数,指定要创建的缓冲区的长度。缓冲区包含用零填充的所有内存位置。

Buffer.alloc()比 Buffer.allocUnsafe()慢。

指定长度的缓冲区,填充有指定值

若要创建指定长度并填充有指定值的缓冲区,请使用Buffer.alloc(int,int)方法。
语法
Buffer.alloc(bufferLength, value);
 

  const buf1 = Buffer.allocUnsafe(10, 3);

 bufferLength是一个整数,指定要创建的缓冲区的长度。缓冲区包含用value填充的所有内存位置。

Node.js –写入缓冲区

Buffer类有很多方法可以将不同格式的数据写入缓冲区。在本节中,我们将学习编写一个字符串以缓冲。
若要将字符串写入缓冲区,请使用Buffer.write方法。
语法

Buffer.write(string[, offset[, length]][, encoding]);
  const buf1 = Buffer.allocUnsafe(100);
 
  const len = buf1.write('welcomeuser',2,5,'utf8');

从offset开始的字符串,按长度提供的字符数将以指定的编码格式写入缓冲区。

write()方法返回写入缓冲区的字节数。

Node.js – 从缓冲区读取

要从缓冲区读取字节,请使用Buffer.values方法。
语法

Buffer.values();

创建并返回buf1值(字节)的迭代器。在for..of语句中使用Buffer时,将自动调用此函数。

  const buf1 = Buffer.allocUnsafe(11);
 
  const len = buf1.write('welcomeuser');
 
  for(const byt of buf1.values()){
    console.log(byt);
  }

输出结果

$ node read-buffer.js  
119
101
108
99
111
109
101
117
115
101
114

结论:

在本Node.js教程– Node.js缓冲区中,我们学习了如何在Node.js中创建,写入和读取缓冲区。在接下来的教程中,我们将学习一些关于缓冲区的有趣操作。