Node中的Buffer模块

90 阅读1分钟

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中写入数据时,如果内存空间不够用,就会申请一个更大的内存空间,
// 将原来的数据拷贝到新的内存空间中,
// 然后再向新的内存空间中写入数据,这种机制称为内存空间的扩容。