even

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1、Buffer模块

Buffer 让javascript可以直接操作二进制, 在node中, buffer是一片内存空间(可以理解为缓冲区)它有以下几个特点

  • 无需require的一个全局变量
  • 实现nodejs平台下的二进制操作
  • 不占据v8堆内存大小的内存空间
  • 内存的使用由Node控制, 由V8的GC回收

创建buffer实例

  • alloc: 创建指定字节大小的buffer
  • allocUnsafe: 创建指定大小的buffer(不安全)
  • from: 接收数据,创建buffer
const bf1 = Buffer.alloc(10); //创建一个单位为10的buffer

const bf2 = Buffer.allocUnsafe(10); // 创建一个单位为10的buffer  注意:该方法不安全

const bf3 = Buffer.from('码农', 'utf8'); // 第二个参数是编码,默认就是utf8

const bf4 = Buffer.from(bf1)  // 这个时候bf1与bf4是拷贝的关系,不是引用关系

 Buffer的实例方法

  • fill: 使用数据填充 buffer  fill(string, start, end): string表示填充的内容,start表示填充的起始位置, end表示填充的结束位置
  • write: 向buffer中写入数据
  • toString: 从buffer中提取数据  toString(encoding, start, end)  encoding表示编码方式, start表示填充的起始位置, end表示填充的结束位置
  • slice: 截取buffer
  • indexOf: 从buffer中读取数据
  • copy: 拷贝 buffer中的数据
const bf = Buffer.alloc(6);

// 当使用fill时,所填充的内容小于容器时,那么就会反复这个内容进行填充,如果大于,则直接截取
bf.fill('123');
console.log(bf.toString()); // 输出 123123

// Buffer的toString举例:表示以utf-8的编码方式进行编码,起始位置为2, 结束位置为5
console.log(bf.toString('utf-8', 2, 5));

// Buffer的slice举例  截取从头到倒数第四位的字符
console.log(bf.slice(0, -4).toString());

const bf1 = Buffer.from('这是一个文本');
console.log(bf1.indexOf('是')); // 输出3, 因为一个汉字占用3个字符

// Buffer的拷贝功能
const abf = Buffer.from('今天天气真好');
const bbf = Buffer.alloc(abf.length);
abf.copy(bbf);
console.log(bbf.toString());

// Buffer的write, 如果给定的数据比容器大,则会被截取
const bf2 = Buffer.alloc(6);
bf2.write('are you ok???');
console.log(bf2.toString());

 Buffer的两个静态方法

  Buffer.concat(): 表示对两个buffer进行拼接

       Buffer.isBuffer(): 判断给定的对象是否是一个buffer对象

const bf1 = Buffer.from('Node学习');
const bf2 = Buffer.from('从入门到放弃');

// 通过Buffer.concat可以把两个字符串的buffer进行连接起来
console.log(Buffer.concat([bf1, bf2]).toString()); // 输出 Node学习从入门到放弃

// 第二个参数10表示截取的长度
console.log(Buffer.concat([bf1, bf2], 10).toString()); // 输出 Node学习

console.log(Buffer.isBuffer(bf1)); // 输出 true

 2、FS模块

fs基本操作类

fs常用API

 

posted on 2023-06-29 00:55  even_blogs  阅读(7)  评论(0编辑  收藏  举报