乐趣区

关于前端:每日灵魂一问-Node-中-Buffer-的理解

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)的性能来操作二进制数据流,提供了压缩或解压性能

退出移动版