2

Buffer

nodejs需要处理网络协议、操作数据库、处理图片、接收上传文件等,在网络流和文件的操作中,要处理大量二进制数据,而Buffer就是用来存放二进制数据的
Buffer与String对等
区别:
字符串是只读的,并且对字符串的任何修改得到的都是一个新字符串,原字符串保持不变;
Buffer,会对原数据进行修改

方法

1.创建Buffer的方法

Buffer.from(array); //返回一个被 array 的值初始化的新的 Buffer 实例

Buffer.alloc(size,fill,encoding); //返回一个指定大小的 Buffer 实例,如果没有设置 fill,则默认填满 0

2.写入缓冲区

buf.write(string,offset,length,encoding)

string - 写入缓冲区的字符串。
offset - 缓冲区开始写入的索引值,默认为 0
length - 写入的字节数,默认为 buffer.length
encoding - 使用的编码。默认为 'utf8'

3.从缓冲区读取数据

buf.toString(encoding,start,end)
encoding - 使用的编码。默认为 'utf8'
start - 指定开始读取的索引位置,默认为 0
end - 结束位置,默认为缓冲区的末尾。

4.其他方法

buf.toJSON() 将Buffer 转换为 JSON 对象
buf.compare(otherBuffer); 缓存区比较

应用场景

1.I/O操作
通过流的形式,将一个文件的内容读取到另外一个文件

const fs = require('fs');

const inputStream = fs.createReadStream('input.txt'); // 创建可读流
const outputStream = fs.createWriteStream('output.txt'); // 创建可写流

inputStream.pipe(outputStream); // 管道读写

2.加解密
在一些加解密算法中会遇到使用 Buffer

3.zlib.js
zlib.js 为 Node.js 的核心库之一,其利用了缓冲区(Buffer)的功能来操作二进制数据流,提供了压缩或解压功能


NANA
94 声望7 粉丝

小魔女