常用内置模块
path
获取路径信息
path.dirname()
:获取文件的父文件夹path.basename()
:获取文件名;path.extname()
:获取文件扩展名__dirname
:获取父文件夹路径
路径拼接
path.join()
path.resolve()
- resolve函数会判断我们拼接的路径前面是否有/或../或./
- 如果有表示是一个绝对路径,会返回对应的拼接路径
- 如果没有,那么会和当前执行文件所在的文件夹进行路径的拼接
fs
大多有三种操作方式
- 同步操作
- 异步回调函数操作
- 异步Promise操作
读取文件
fs.statSync(路径)
fs.stat(路径,回调函数)
fs.promise.stat(路径).then(state=>console.log(state))
文件描述符
Node.js抽象出操作系统之间的特定差异,并为所有打开的文件分配一个数字型的文件描述符
- fs.open()方法用于分配新的文件描述符,一旦被分配,则文件描述符可用于从文件读取数据、向文件写入数据、或请求关于文件的信息
fs.open(路径,"r",(err,fd)=>console.log(fd))
fd
为文件描述符
文件读写
fs.readFile(path,[,options], callback)
:读取文件的内容fs.writeFile(file, data[,options], callback)
:在文件中写入内容
options参数
- flag:写入方式
w
打开文件写入,默认值w+
打开文件进行读写,如果不存在则创建文件r+
打开文件进行读写,如果不存在那么抛出异常r
打开文件读取,读取时的默认值a
打开要写入的文件,将流放在文件末尾。如果不存在则创建文件a+
打开文件以进行读写,将流放在文件末尾。如果不存在则创建文件
- encoding:字符编码
- 不填写encoding,默认返回的结果是Buffer
utf-8
能显示中文
文件夹操作
fs.exists()
判断文件夹是否存在,fs.isDirectory()
判断是否是文件夹fs.mkdir()
或者fs.mkdirSync()
创建一个新文件夹fs.readdir(文件夹路径,(err,files)=>{})
fs.rename(旧文件,新文件,(err)=>{})
events
发出事件和监听事件都是通过
EventEmitter
类来完成的,它们都属于events
对象。constEventEmitter=require('events')
,constemitter=newEventEmitter()
emitter.on(eventName,listener)
:监听事件,也可以使用addListener
emitter.off(eventName,listener)
:移除事件监听,也可以使用removeListener
emitter.emit(eventName[,...args])
:发出事件,可以携带一些参数emitter.eventNames()
:返回当前EventEmitter对象注册的事件字符串数组emitter.getMaxListeners()
:返回当前EventEmitter对象的最大监听器数量emitter.listenerCount
(事件名称):返回当前EventEmitter对象某一个事件名称,监听器的个数emitter.listeners
(事件名称):返回当前EventEmitter对象某个事件监听器上所有的监听器数组emitter.once(eventName,listener)
:事件监听一次emitter.prependListener()
:将监听事件添加到最前面emitter.prependOnceListener()
:将监听事件添加到最前面,但是只监听一次emitter.removeAllListeners([eventName])
:移除所有的监听器