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