每日灵魂一问- Node 中 Buffer 的理解
Posted NANA
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日灵魂一问- 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)的功能来操作二进制数据流,提供了压缩或解压功能
以上是关于每日灵魂一问- Node 中 Buffer 的理解的主要内容,如果未能解决你的问题,请参考以下文章
每日灵魂一问-对Node 中的 Stream 的理解?应用场景?
每日灵魂一问-说说你对Node.js 的理解?优缺点?应用场景?