赞
踩
Buffer
是 Node.js 中的一个核心类,用于处理二进制数据。在 Node.js 中,所有与流相关的操作(如文件系统操作、网络通信等)都会涉及到 Buffer
。Buffer
类主要用于处理字节序列,它是一个固定长度的内存区域,用于存储原始数据。
Buffer
可以通过多种方式创建:
从字符串创建:
const buf1 = Buffer.from('hello');
从数组创建:
const buf2 = Buffer.from([0x68, 0x65, 0x6c, 0x6c, 0x6f]);
分配新 Buffer:
const buf3 = Buffer.alloc(5); // 创建一个长度为5的Buffer,并填充为0
const buf4 = Buffer.allocUnsafe(5); // 创建一个长度为5的Buffer,不保证内容为0
Buffer
类提供了许多属性和方法来操作二进制数据。
buf.length
: 返回 Buffer 的长度。buf.toString([encoding], [start], [end])
: 将 Buffer 转换为字符串。
const buf = Buffer.from('hello');
console.log(buf.toString()); // 输出 "hello"
buf.write(string, [offset], [length], [encoding])
: 将字符串写入 Buffer。
const buf = Buffer.alloc(5);
buf.write('hello', 0, 5, 'utf8');
console.log(buf.toString()); // 输出 "hello"
buf.toJSON()
: 返回 Buffer 的 JSON 表示。
const buf = Buffer.from('hello');
console.log(buf.toJSON());
// 输出: {"type":"Buffer","data":[104,101,108,108,111]}
buf.copy(target, targetStart, sourceStart, sourceEnd)
: 将 Buffer 的一部分复制到另一个 Buffer。
const src = Buffer.from('hello world');
const dest = Buffer.alloc(5);
src.copy(dest, 0, 0, 5);
console.log(dest.toString()); // 输出 "hello"
buf.fill(value, [start], [end], [encoding])
: 用指定值填充 Buffer。
const buf = Buffer.alloc(5);
buf.fill(0xff);
console.log(buf); // 输出: <Buffer ff ff ff ff ff>
buf.equals(otherBuffer)
: 检查两个 Buffer 是否相等。
const buf1 = Buffer.from('hello');
const buf2 = Buffer.from('hello');
console.log(buf1.equals(buf2)); // 输出 true
buf.compare(otherBuffer)
: 比较两个 Buffer 的字节顺序。
const buf1 = Buffer.from('abc');
const buf2 = Buffer.from('def');
console.log(buf1.compare(buf2)); // 输出 -1 (表示 buf1 在 buf2 之前)
下面是一个示例,演示了如何使用 Buffer
类的一些基本方法。
const buf1 = Buffer.from('hello'); const buf2 = Buffer.from('world'); console.log('Buffer as string:', buf1.toString()); buf1.write('hi', 0, 2, 'utf8'); console.log('Buffer after write:', buf1.toString()); const buf3 = Buffer.concat([buf1, buf2]); console.log('Concatenated buffer:', buf3.toString()); const buf4 = Buffer.alloc(5); buf1.copy(buf4, 0, 0, 2); console.log('Copied buffer:', buf4.toString()); const buf5 = Buffer.from([0x68, 0x65, 0x6c, 0x6c, 0x6f]); console.log('Buffer from array:', buf5.toString());
Buffer
类是 Node.js 中特有的,不应该在浏览器环境中使用。Buffer
的容量是固定的,一旦创建就不能改变。Buffer.allocUnsafe
创建的 Buffer 不会被初始化为零,因此可能存在安全风险。Buffer
是 Node.js 中处理二进制数据的重要工具。通过掌握 Buffer
的创建和使用方法,你可以更好地处理文件系统操作、网络通信等场景中的数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。