📜  Node.js 缓冲区(1)

📅  最后修改于: 2023-12-03 14:44:43.151000             🧑  作者: Mango

Node.js 缓冲区

介绍

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 缓冲区提供了处理二进制数据的能力,可以进行数据的读取、写入和修改等操作。它在许多应用场景中都是不可或缺的,特别是在处理网络流和文件系统操作等方面。通过使用缓冲区,程序员可以更加灵活地处理和操作二进制数据。