📅  最后修改于: 2023-12-03 15:23:01.384000             🧑  作者: Mango
在 Node.js 中,可以通过缓冲区(Buffer)模块进行基于缓冲区的操作,这个模块是 Node.js 核心模块之一。缓冲区是用于临时存储数据的一段内存,可以在处理二进制数据和流数据时使用。
可以通过 Buffer.alloc()
、Buffer.from()
和 new Buffer()
方法创建缓冲区对象。
Buffer.alloc()
方法用于创建指定大小的缓冲区,缓冲区对象的内容被初始化为 0。
// 创建一个长度为 10 字节的缓冲区
const buf1 = Buffer.alloc(10);
Buffer.from()
方法用于创建缓冲区对象,该方法可接受以下的参数:
// 创建一个包含字符串 "hello world" 的缓冲区
const buf2 = Buffer.from('hello world');
// 创建一个包含数组 [1, 2, 3] 的缓冲区
const buf3 = Buffer.from([1, 2, 3]);
// 创建一个包含实际内存分配的缓冲区
const buf4 = Buffer.from(buf3);
应该避免使用 new Buffer()
方法创建缓冲区对象,因为该方法已被废弃。可以使用 Buffer.from()
方法代替。
buf.write(string[, offset[, length]][, encoding]);
string
- 写入缓冲区的字符串。offset
- 缓冲区开始写入的索引值,默认为 0 。length
- 写入的字节数,默认为 buffer.length - offset
。encoding
- 使用的编码。默认为 'utf8' 。const buf = Buffer.alloc(256);
const len = buf.write('hello world');
console.log('写入字节数:' + len);
buf.toString([encoding[, start[, end]]])
encoding
- 使用的编码。默认为 'utf8' 。start
- 指定开始读取的索引位置,默认为 0。end
- 结束位置,默认为缓冲区的末尾。const buf = Buffer.from('hello world');
console.log(buf.toString());
buf.toJSON()
const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]);
const json = JSON.stringify(buf.toJSON());
console.log(json);
Buffer.concat(list[, totalLength])
list
- 用于合并的 Buffer 对象数组列表。totalLength
- 指定合并后 Buffer 对象的总长度。const buffer1 = Buffer.from('菜鸟教程 ');
const buffer2 = Buffer.from('www.runoob.com');
const buffer3 = Buffer.concat([buffer1, buffer2]);
console.log('buffer3 内容:' + buffer3.toString());
buf.compare(otherBuffer);
otherBuffer
- 与 buf 对象比较的另外一个 Buffer 对象。const buffer1 = Buffer.from('ABC');
const buffer2 = Buffer.from('ABCD');
const result = buffer1.compare(buffer2);
if (result < 0) {
console.log(buffer1 + ' 在 ' + buffer2 + ' 之前');
} else if (result === 0) {
console.log(buffer1 + ' 与 ' + buffer2 + ' 相同');
} else {
console.log(buffer1 + ' 在 ' + buffer2 + ' 之后');
}
buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])
targetBuffer
- 要拷贝的 Buffer 对象。targetStart
- 数字,可选,目标对象开始写入的偏移量,默认为 0 。sourceStart
- 数字,可选,源对象开始读取的偏移量,默认为 0 。sourceEnd
- 数字,可选,源对象结束读取的偏移量,默认为 buffer.length
。const buffer1 = Buffer.from('ABC');
const buffer2 = Buffer.alloc(3);
buffer1.copy(buffer2);
console.log('buffer2 content: ' + buffer2.toString());
以上就是 Node.js 缓冲区模块的相关操作介绍,更多详细信息可以查看官方文档。