• Node.js Video Tutorials

Node.js - Buffer.alloc() 方法



NodeJS 的 Buffer.alloc() 方法用于创建一个指定大小的新缓冲区。如果指定的大小大于 `buffer.constants.MAX_LENGTH` 或小于 0,则会抛出类型为 ERR_INVALID_ARG_VALUE 的错误。如果指定的大小不是数字,则会抛出 TypeError。

使用 Buffer.alloc() 创建缓冲区比其替代方法 Buffer.allocUnsafe() 慢,但它确保新创建的缓冲区不包含来自先前缓冲区的任何敏感数据以及先前为缓冲区创建分配的数据。

语法

以下是 NodeJS Buffer.alloc() 方法 的语法:

Buffer.alloc(size[, fill[, encoding]])

参数

此方法接受三个参数,如下所述。

  • size − (必填) 整数值,表示要创建的缓冲区的长度。

  • fill − (可选) 缓冲区填充的值。默认为 0。

  • encoding − (可选) 使用的编码,默认为 utf8。如果使用字符串,则需要指定编码。

返回值

Buffer.alloc() 方法将返回指定大小的缓冲区。

示例

此示例演示如何使用 NodeJS Buffer.alloc() 方法创建缓冲区:

const mybuffer = Buffer.alloc(5);
console.log(mybuffer);

输出

缓冲区大小为 5。由于未使用 fill 参数,因此默认值 0 填充了大小为 5 的缓冲区。

<Buffer 00 00 00 00 00>

示例

此示例演示如何使用 Buffer.alloc() 方法和 fill 参数创建缓冲区:

const mybuffer = Buffer.alloc(5, 5);
console.log(mybuffer);

输出

缓冲区大小为 5。由于使用了 fill 参数值为 5。

<Buffer 05 05 05 05 05>

示例

此示例演示如何使用 Buffer.alloc() 方法并将 fill 参数设置为字符串值:

const mybuffer = Buffer.alloc(5, 'a');
console.log(mybuffer);
console.log(mybuffer.toString());

输出

缓冲区大小为 5。由于使用了 fill 参数值为字符串 'a'。

<Buffer 61 61 61 61 61>
aaaaa

示例

此示例演示如果使用非数字大小参数会抛出错误。

const mybuffer = Buffer.alloc('1');
console.log(mybuffer);
console.log(mybuffer.toString());

输出

由于 size 参数为字符串,这是一个无效的值,因为 size 必须是整数。执行上述程序时,将抛出如下所示的错误。

TypeError [ERR_INVALID_ARG_TYPE]: The "size" argument must be of type number. Received type string
   at Function.alloc (buffer.js:271:3)
   at Object.<anonymous> (C:\nodejsProject\src\testbuffer.js:1:25)
   at Module._compile (internal/modules/cjs/loader.js:816:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:827:10)
   at Module.load (internal/modules/cjs/loader.js:685:32)
   at Function.Module._load (internal/modules/cjs/loader.js:620:12)
   at Function.Module.runMain (internal/modules/cjs/loader.js:877:12)
   at internal/main/run_main_module.js:21:11
nodejs_buffer_module.htm
广告