Buffer(缓冲器)
概念
- 类似数组的对象,本质是一段内存空间,专门处理二进制数据
- 大小固定无法调整,性能较好,可以直接对计算机内存进行操作
- 每个元素的大小是1字节
- 存储的是二进制,打印时会显示16进制方便查看
创建
- alloc、allocUnsafe、from
// alloc(分配)
// 创建一个十字节的空间--会清空分配的内存空间
let buf = Buffer.alloc(10)
// allocUnsafe UNsafe:不安全的
// 创建一个十字节的空间--不会清理分配的内存空间,会存在脏数据,但是速度快
let buf = Buffer.allocUnsafe(10)
// from 把数组或字符串转换成Buffer二进制数据 字母按照ASCII码表转移 数组会把数组的每一项转码存储
let buf = Buffer.from('hello')
转换
- 实例的toString
- 将buffer转换为字符串
- 实例.toString()
- 实例上某一份内存toString
// 将当前内存的进制做转换
let buf = Buffer.from('hello')
// buf[0].toString(2) // 把当前存储转换为二进制
// 还可以修改内存
buf[0] = 65
溢出
- 一字节二进制存储的最大十进制数字是255,超过之后就会溢出、高位舍弃,赋值时需注意
FS模块
写入
- fs相对路径参照物是命令行的工作目录,在代码中写相对路径时要慎重
- 可以使用__dirname获取当前文件所在目录的绝对路径
- writeFile(异步),是IO线程,异步操作
- 覆盖写入
- 第一参数为路径,第二参数为写入的内容,第三参数{flag : 'a'}代表追加写入
3. writeFileSync(同步)
- appendFile(追加写入)
- 参数和异步写入一致,第三参数为配置项,可不写直接写回调函数
- 追加成功后会返回null
- 换行为 \r\n
- createWriteStream(流式写入)
- 流式写入,适合连续、大文件写入
- 创建写入流后,调用实例的write方法即可写入