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)的功能来操作二进制数据流,提供了压缩或解压功能
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。