Node.js - Buffer.write() 方法



NodeJS Buffer.write() 方法会将给定的字符串值从偏移值给定的位置写入缓冲区。如果缓冲区没有足够的空间来容纳字符串值,则将写入字符串的一部分。请注意,它不会负责写入部分编码的字符串值。

语法

以下是Node.JS Buffer.write()方法的语法 -


 buf.write(string[, offset[, length]][, encoding])

参数

此方法接受四个参数。下面将对此进行解释。

  • string − (必需)要写入缓冲区的字符串值。
  • offset − (可选)指示开始写入的位置的偏移量。默认值为 0。
  • length - (可选)要写入的字节数。长度不能超过 buffer.length − offset。因此,length 的默认值为 buffer.length − offset。
  • encoding − (可选) 用于字符串值的字符编码。默认值为 utf-8。
返回值

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

在此示例中,将使用 NodeJS Buffer.from() 创建一个缓冲区,然后将字符串值写入创建的缓冲区。


const buffer = Buffer.from('Hello');
buffer.write('World');
console.log("The final buffer is :"+buffer.toString());

输出

我们没有使用任何偏移值,因此默认情况下,它将被视为 0。使用 Hello 字符串创建的缓冲区的长度为 5。因此,当您向其写入 World 时,其长度与缓冲区相同,因此将写入一个完整的字符串。

The final buffer is :World

在此示例中,我将使用 Buffer.alloc() 创建一个缓冲区,并为其分配 5 个长度。现在将使用 Buffer.write() 方法使用更大的字符串写入缓冲区。


const buffer = Buffer.alloc(5);
buffer.write('Hello World');
console.log("The final buffer is :"+buffer.toString());

输出

我们没有使用任何偏移值,因此默认情况下,它将被视为 0。创建的缓冲区的长度为 5。由于我们正在编写一个长度为 11 的字符串,因此缓冲区将仅容纳长度 5。因此,当您看到输出时,缓冲区将只写入字符串 Hello,因为它只能采用 5 的长度。

The final buffer is :Hello

在此示例中,我将检查偏移值。将在 Buffer.write() 中指定偏移量,并将字符串值写入创建的缓冲区。


const buffer = Buffer.alloc(5);
buffer.write('Hello World', 3);
console.log("The final buffer is :"+buffer.toString());

输出

使用的偏移量为 3,缓冲区的长度为 5,要写入的字符串的长度为 11。因此,缓冲区将从 3 开始填充,缓冲区长度即 5。所以只有字符 He 会被写入缓冲区。

The final buffer is :He

在此示例中,将利用长度和编码使用 Buffer.write() 方法写入 Buffer。


const buffer = Buffer.alloc(10);
buffer.write('Hello World', 3, 5, 'utf-8');
console.log("The final buffer is :"+buffer.toString());

输出

所以偏移量是从 3 开始的,我们要写入的字符串长度是 5。缓冲区的总长度为 10。由于要写入的长度为 5,因此可以写入,因为 buffer.length − offset 为 10 − 3 = 7。因此,它可以轻松地在缓冲区中容纳来自偏移量 3 的长度为 5 的字符串值。

The final buffer is :Hello