1. Buffer基本操作
Buffer对象是node处理二进制数据的一个接口。它是node原生提供的全局对象,可以直接使用,不需要require('Buffer')。
- 实例化
- Buffer from(array)
- Buffer alloc(size)
- 功能方法
- Buffer isEncodeing() 判断是否支持编码
- Buffer isBuffer() 判断是否为Buffer
- Buffer byteLength() 返回指定编码的字节长度,默认为utf8
- Buffer concat() 将一组Buffer对象合并为一个Buffer对象
- 实例方法
- write() 向Buffer对象中写入内容
- slice() 截取新的Buffer对象
- toString() 把Buffer对象转成字符串
- toJson() 把Buffer对象转成json形式的字符串
2. 核心API操作
2.1 路径操作API
const path = require('path');
首先引入path模块path.basename()
获取路径的最后一部分(文件名和属性)
例如path.basename('/foo/bar/baz/asdf/indexedDB.html')
path.dirname('/abc/qq/www/abc.txt')
只获取路径,不获取文件名- 路径的格式化处理
path.format()
和path.parse()
,第一个是把对象转变成字符串,第二钟是把字符串转变成对象。例如:
let obj = path.parse(__filename);
console.log(obj);
得到,运行项目的路径对象。
5. path.join()
拼接路径
6. path.relative()
计算相对路径
7.path.resolve()
解析路径,类似cmd中我们cd一步步进入路径
8.path.delimiter()
表示路径分隔符(windows中是\,Linux中是/)
9.path.sep()
环境变量分隔符(windows中使用;,Linux中使用:)
2.2 文件操作API
node.js中的文件操作属于I/O的一种,为异步操作,一为文件操作,一为网络操作。当然在浏览器中也存在异步操作,主要存在三种:1.定时任务 2.事件处理 3.AJAX回调处理。
因为js中的运行为单线程的,引入了事件队列的机制。当遇到某些代码比较耗时的情况下,会放置队列中,继续进行js代码。能进入到队列的任务:文件读写、网络请求响应处理。
-
fs.stat()
方法中的:isFile
判断是否为文件,isDirectory
判断是否为目录。其中常用属性有atime
为访问时间,ctime
为文件的状态信息发生变化的时间(比如文件的权限),mtime
为文件数据发生变化的时间,birthtime
为文件创建的时间。 -
fs.readFile()
读文件操作。有三个参数,第一个参数为路径,第二个参数有编码得到的是字符串,如果没有第二个参数那么得到的是Buffer对象,第三个是回调函数里面有出错返回err和读取参数data。
const fs = require('fs');
const path = require('path');
let strpath = path.join(__dirname,'2.html');
fs.readFile(strpath,'utf8',(err,data) => {
//如果有错返回
if(err) return;
// console.log(data.toString());
console.log(data);
});
fs.readFileSync(path,第二个参数转码)
- 文件的流式操作中,静态方法只能通过类名来调用,不可以通过实例对象来调用
- 类的继承,子类调用父类的静态方法时,需要通过类名(此处为Dog)进行调用,而不是之后定义的名称。
class Dog extends Animal {
constructor(name,color) {
super(name); //super用来调用父类
this.color = color;
}
showColor() {
console.log(this.color);
}
}
2.3 大文件操作(流式操作)
-
fs.createReadStream(path[, options])
原路径 -
fs.createWriteStream(path[, options])
目标路径 - node.js中没有dom操作,所以无法定义点击事件,但是可以通过
readStream.on('data',(chunk))
来调用事件,也可以使用pipe直接把输入流和输出流连接起来,是一种简洁的处理方式,以下更加简便
fs.createWriteStream(span).pipe(fs.createWriteStream(dpath))
2.4 目录操作
-
fs.mkdir(path,'目录名称',callback)
异步创建目录,其中回调函数为一个参数为err -
fs.mkdirSync(path,'目录名称'))
同步创建目录 -
fs.readdir(path,callback)
读取目录,这里callback为两个参数err和files,files表现为数组形式,包括所有目录名和文件名,推荐异步的方式,同步性能弱 -
fs.rmdir(path.join(__dirname,'要删除的目录'),callback)
删除目录操作