📅  最后修改于: 2023-12-03 14:44:43.151000             🧑  作者: Mango
Node.js 缓冲区(Buffer)是用于处理二进制数据的类,其中可以存储原始字节数据。它是 Node.js 核心库的一部分,提供了对数据的读取、写入和修改等操作。此外,Buffer 类被广泛应用于处理网络流、文件系统操作、以及其他需要处理二进制数据的场景。
可以使用以下方法来创建缓冲区:
const buf = Buffer.alloc(10);
const buf2 = Buffer.from('Hello, World!');
Buffer.alloc(size[, fill[, encoding]])
:创建一个指定 size
大小的缓冲区,并用 fill
填充,如果未提供填充值,则默认填充为 0。可选择性地指定 encoding
编码方式,默认为 UTF-8。Buffer.from(array)
:将一个数组 array
创建为新的缓冲区。Buffer.from(arrayBuffer[, byteOffset[, length]])
:从一个 ArrayBuffer
对象中创建一个新的缓冲区。Buffer.from(buffer)
:复制传入的 buffer
数据到一个新的缓冲区。Buffer 类提供了丰富的方法和属性,用于操作缓冲区的数据。以下是一些常用的操作:
buf.length
:返回缓冲区的字节长度。buf.toString([encoding[, start[, end]]])
:将缓冲区数据转换为字符串,默认以 UTF-8 编码方式。buf.write(string[, offset[, length]][, encoding])
:将字符串 string
写入到缓冲区,返回写入的字节数。buf.fill(value[, offset[, end]][, encoding])
:用指定的 value
填充缓冲区。buf.readInt8(offset)
:读取缓冲区指定 offset
位置的 8 位有符号整数。buf.readUInt8(offset)
:读取缓冲区指定 offset
位置的 8 位无符号整数。buf.slice([start[, end]])
:返回一个新的缓冲区,包含原始缓冲区的指定部分。buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]])
:将缓冲区的一部分复制到其他缓冲区。以下示例展示了如何创建缓冲区、读取、写入和修改数据:
const buf = Buffer.alloc(10);
buf.write('Hello');
console.log(buf.toString()); // 输出: Hello
const sliceBuf = buf.slice(0, 5);
const copyBuf = Buffer.alloc(10);
buf.copy(copyBuf);
console.log(sliceBuf.toString()); // 输出: Hello
console.log(copyBuf.toString()); // 输出: Hello
Node.js 缓冲区提供了处理二进制数据的能力,可以进行数据的读取、写入和修改等操作。它在许多应用场景中都是不可或缺的,特别是在处理网络流和文件系统操作等方面。通过使用缓冲区,程序员可以更加灵活地处理和操作二进制数据。