Skip to content

Buffer

向军大叔每晚八点在 抖音bilibli 直播

xj-small

在 Node 开发中随处可见 Buffer 的使用,所以对 Buffer 的理解是很有必要的,对你更深刻的了解 Node 很有帮助。

在不了解 Buffer的情况下,也不影响你使用node.js

基本概念

在前端使用 JS 时不需要操作二进制数据,但在后端有对大文件打开、写入等操作,需要处理二进制数据流。

Buffer 是用于存放二进制数据的缓存区(内存)。比如我们读取大文件时,一次载入内存会占用大量内存,这种情况可以使用 Buffer 将数据一块一块加入到 Bueffer 内存中,然后再以流的形式一段一段传递,这样减少内存占用,加快数据读取处理。

你也可以把 Buffer 理解为你在看在线视频时的缓冲区数据。

现实生活中类似,京东在各地建立的仓储点,这个仓储点就是 Buffer。有了这个仓储点就不需要从商家源头运货了,京东不断的保证仓储点有货,就可以保证最快的把货送到客户手里。

操作体验

下面通过自定义 Buffer,来更好的理解 Buffer

  • Buffer 是全局类不需要引用其他模块
  • Buffer 是内存数据和大家了解的数组一样,只不过储存的是二进制

下面通过自己创建 Buffer来理解

const buffer = Buffer.from('houdunren')
//结果为二进制数据,每个为一个字节
console.log(buffer)

//返回 的 JSON 表示形式,值为unicode编码
console.log(buffer.toJSON())

//转换为字符串
console.log(buffer.toString())

//可以像数组一样,修改 Buffer 数据
buffer[0] = 72
console.log(buffer.toString('utf-8'))

下面定义Buffer 储存大小,超过大小的数据将被忽略

//定义 Buffer 空间为4个字节
const buffer = Buffer.alloc(4)
buffer.write('houdunren')
// 只能保存 houd 4个字节数据
console.log(buffer.toString())