Buffer是一个字节数组,数组中的每一项都是一个字节,每个字节的取值范围是0-255,使用十六进制表示,0x00-0xff
// Buffer是一个字节数组,数组中的每一项都是一个字节,每个字节的取值范围是0-255,使用十六进制表示,0x00-0xff
// Buffer对象是一个全局对象,不需要require引入,直接使用即可
// 创建Buffer对象,手动指定编码格式
const buf = new Buffer('hello world','utf-8')
console.log(buf)
// 通过Buffer.from创建Buffer对象
const buf1 = Buffer.from('hello world')
console.log(buf1)
// 通过Buffer.alloc创建Buffer对象
const buf2 = Buffer.alloc(10)//向内存申请10个字节的空间
console.log(buf2) // <Buffer 00 00 00 00 00 00 00 00 00 00>
// 手动对Buffer对象中的字节进行赋值
buf2[0] = 0x61
buf2[1] = 0x62
buf2[2] = 0x63
buf2[3] = 0x64
buf2[4] = 0x65
buf2[5] = 0x66
buf2[6] = 0x67
buf2[7] = 0x68
buf2[8] = 0x69
buf2[9] = 0x6a
console.log(buf2) // <Buffer 61 62 63 64 65 66 67 68 69 6a>
// 将Buffer对象转换为字符串
console.log(buf2.toString()) // abcdefghij
可以通过Buffer将已有文件读取为Buffer格式
const fs = require('fs')
// 1.从文件中读取Buffer对象
fs.readFile('./test.js',(err,data)=>{
if(err){
console.log(err)
}else{
console.log(data)
console.log(data.toString())
}
})
// 事实上创建Buffer时,并不会频繁向操作系统申请内存,它会默认申请一个大小为8KB的内存空间,
// 当我们向Buffer中写入数据时,如果内存空间不够用,就会申请一个更大的内存空间,
// 将原来的数据拷贝到新的内存空间中,
// 然后再向新的内存空间中写入数据,这种机制称为内存空间的扩容。