- Node.js教程
- Node.js - 教程
- Node.js - 简介
- Node.js - 环境设置
- Node.js - 首次申请
- Node.js - REPL 终端
- Node.js - 命令行选项
- Node.js - 包管理器 (NPM)
- Node.js - 回调概念
- Node.js - 上传文件
- Node.js - 发送电子邮件
- Node.js - 活动
- Node.js - 事件循环
- Node.js - 事件发射器
- Node.js - 调试器
- Node.js - 全局对象
- Node.js - 控制台
- Node.js - 流程
- Node.js - 扩展应用程序
- Node.js - 包装
- Node.js - Express 框架
- Node.js - RESTful API
- Node.js - 缓冲器
- Node.js - Streams
- Node.js - 文件系统
- Node.js MySQL
- Node.js - MySQL 快速入门
- Node.js - MySQL创建数据库
- Node.js - MySQL创建表
- Node.js - MySQL Insert Into
- Node.js - MySQL Select From
- Node.js - MySQL Where 子句
- Node.js - MySQL Order By
- Node.js - MySQL Delete
- Node.js - MySQL Update
- Node.js - MySQL Join
- Node.js MongoDB
- Node.js - MongoDB 快速入门
- Node.js - MongoDB 创建数据库
- Node.js - MongoDB 创建集合
- Node.js - MongoDB Insert
- Node.js - MongoDB Find
- Node.js - MongoDB 查询
- Node.js - MongoDB 排序
- Node.js - MongoDB Delete
- Node.js - MongoDB Update
- Node.js - MongoDB Limit
- Node.js - MongoDB Join
- Node.js模块
- Node.js - 模块
- Node.js - 内置模块
- Node.js - utility 模块
- Node.js - Web 模块
Node.js - 缓冲器
Node.js 中的缓冲区类对象,用于表示固定长度的字节序列。它存储的原始数据类似于整数数组,但对应于 V8 堆之外的原始内存分配。Node.js 中的 Buffer 类是 JavaScript 的 Uint8Array 类的子类。尽管实例 Buffer 类是全局对象,但建议通过 import 或 require 语句显式引用该类。
在早期版本的 Node.js 中,缓冲区对象是使用 new 运算符声明的 -
var buf = new Buffer(10);
也可以从给定数组创建缓冲区对象 -
var buf = new Buffer([10, 20, 30, 40, 50]);
或从给定的字符串 -
var buf = new Buffer("Simply Easy Learning", "utf-8");
但是,现在已弃用 new 关键字。您需要使用以下静态方法来创建 Buffer 对象 -
// Creates a zero-filled Buffer of length 10.
const buf1 = Buffer.alloc(10);
// Creates an uninitialized buffer of length 10.
const buf2 = Buffer.allocUnsafe(10);
// Creates a Buffer containing array
const buf3 = Buffer.from([1, 2, 3]);
// creates a buffer from string
const buf4 = Buffer.from('hello world', 'utf8');
静态方法
alloc()
分配指定大小(以字节为单位)的新缓冲区。
Buffer.alloc(size[, fill[, encoding]])
参数
- size − 新缓冲区的所需长度。
- fill − 用于预填充新缓冲区的值。默认值:0。
- encoding − 如果 fill 是一个字符串,这就是它的编码。默认值:'utf8'。
例
const buf = Buffer.alloc(5);
console.log(buf);
输出
allocUnsafe()
创建指定大小(以字节为单位)的未初始化缓冲区
Buffer.allocUnsafe(size)
例
const buf = Buffer.allocUnsafe(10);
console.log(buf);
buf.fill('a');
console.log(buf);
输出
<Buffer 61 61 61 61 61 61 61 61 61 61>
from()
使用 0 – 255 范围内的字节数组分配新的缓冲区。
例
// Creates a new Buffer containing the UTF-8 bytes of the string 'buffer'.
const buf1 = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);
console.log(buf1);
// Creates a new Buffer from integer array.
const buf2 = Buffer.from([10, 20, 30, 40, 50]);
console.log(buf2);
输出
<Buffer 0a 14 1e 28 32>
from()
创建一个包含字符串的新 Buffer。
Buffer.from(string[, encoding])
参数
- string <string> 要编码的字符串。
- encoding <string> 字符串的编码。默认值:'utf8'。encoding 参数标识在将字符串转换为字节时要使用的字符编码。
例
const buf1 = Buffer.from('Hello World');
console.log(buf1);
console.log(buf1.toString());
输出
Hello World
compare()
将缓冲区对象与其他缓冲区对象进行比较。
compare(target[, targetStart[, targetEnd[, sourceStart[, sourceEnd]]]])
参数
- target − 要与之比较的缓冲区。
- targetStart − 开始比较的目标内的偏移量。默认值:0。
- targetEnd - 目标内结束比较的偏移量(不包括在内)。默认值:target.length。
- sourceStart − 源缓冲区内开始比较的偏移量。默认值:0。
- sourceEnd - 源缓冲区内用于结束比较的偏移量(不包括在内)。默认值:buf.length。
该函数返回一个数字,指示第一个缓冲区是位于排序顺序之前、之后还是与其他缓冲区对象相同。
如果第二个与第一个相同,则返回 0
如果排序时第二个缓冲区应位于第一个缓冲区之前,则返回 1。
如果排序时第二个缓冲区应位于第一个缓冲区之后,则返回 -1。
例
var buffer1 = Buffer.from('BALL');
var buffer2 = Buffer.from('BAT');
var result = buffer1.compare(buffer2);
if(result < 0) {
console.log(buffer1 +" comes before " + buffer2);
} else if(result === 0) {
console.log(buffer1 +" is same as " + buffer2);
} else {
console.log(buffer1 +" comes after " + buffer2);
}
输出
在上面的示例中,将两个 Buffer 对象更改为 −
var buffer1 = Buffer.from('CURE');
var buffer2 = Buffer.from('CORE');
输出
copy()
将数据从此缓冲区的某个区域复制到目标缓冲区中的某个区域,即使目标内存区域与源重叠也是如此。
copy(target[, targetStart[, sourceStart[, sourceEnd]]])
参数
- target − 要复制到的缓冲区。
- targetStart − 目标内开始写入的偏移量。默认值:0。
- sourceStart - 开始复制的 buf 内的偏移量。默认值:0。
- sourceEnd - buf 内停止复制的偏移量(不包括在内)。默认值:buf.length。
例
var buffer1 = Buffer.from('Hello World');
var buffer2 = Buffer.allocUnsafe(buffer1.length);
var result = buffer1.compare(buffer2);
buffer1.copy(buffer2);
console.log("buffer2 content: " + buffer2.toString());
输出
entries()
从 Buffer 对象的内容返回 [index, byte] 对的迭代器。
例
var buf = Buffer.from('Hello World');
for (const pair of buf.entries()) {
console.log(pair);
}
输出
[ 1, 101 ]
[ 2, 108 ]
[ 3, 108 ]
[ 4, 111 ]
[ 5, 32 ]
[ 6, 87 ]
[ 7, 111 ]
[ 8, 114 ]
[ 9, 108 ]
[ 10, 100 ]
slice()
返回一个由给定索引裁剪的新缓冲区
buf.slice([start][, end])
参数
- start − 数字,可选,默认值:0
- end − number,可选,默认值:buffer.length
返回值
返回一个新的缓冲区,由开始(默认为 0)和结束(默认为 buffer.length)索引进行偏移和裁剪。负索引从缓冲区的末端开始。
例
var buffer1 = Buffer.from('QikepuComPoint');
//slicing a buffer
var buffer2 = buffer1.slice(0,9);
console.log("buffer2 content: " + buffer2.toString());
输出
write()
根据指定的编码将字符串写入偏移量的缓冲区。
write(string[, offset[, length]][, encoding])
参数
- string − 要写入 buf 的字符串。
- offset − 在开始写入字符串之前要跳过的字节数。默认值:0。
- length − 写入的最大字节数(写入的字节数不会超过 buf.length - offset)。默认值:buf.length - offset。
- encoding - 字符串的字符编码。默认值:'utf8'。
该函数返回写入的字节数。
例
const buf = Buffer.alloc(256);
const len = buf.write("Simple Easy Learning");
console.log(`${len} bytes: ${buf.toString('utf8', 0, len)}`);
输出
toJSON()
返回给定缓冲区对象的 JSON 表示形式。
例
const buf = Buffer.from("Simple Easy Learning");
var json = buf.toJSON();
console.log(json);
输出
type: 'Buffer',
data: [
83, 105, 109, 112, 108, 101,
32, 69, 97, 115, 121, 32,
76, 101, 97, 114, 110, 105,
110, 103
]
}
concat()
返回一个新的 Buffer,这是连接所有 Buffer 实例的结果。
concat(list[, totalLength])
参数
- list − 要连接的 Buffer 或 Uint8Array 实例的列表。
- totalLength − 连接时列表中的缓冲区实例的总长度。
例
var buffer1 = Buffer.from('qikepuCom');
var buffer2 = Buffer.from('Simply Easy Learning');
var buffer3 = Buffer.concat([buffer1,buffer2]);
console.log("buffer3 content: " + buffer3.toString());
输出
方法参考
类方法
方法 | 描述 |
---|---|
Buffer.isEncoding(encoding) |
如果编码是有效的编码参数,则返回 true,否则返回 false。 |
Buffer.isBuffer(obj) |
测试 obj 是否为 Buffer。 |
Buffer.byteLength(string[, encoding]) |
给出字符串的实际字节长度。编码默认为“UTF8”。它与 String.prototype.length 不同,因为 String.prototype.length 返回字符串中的字符数。 |
Buffer.concat(list[, totalLength]) |
返回一个缓冲区,该缓冲区是将列表中的所有缓冲区连接在一起的结果。 |
Buffer.compare(buf1, buf2) |
与 buf1.compare(buf2) 相同。用于对缓冲区数组进行排序。 |