Node 基础(四)常见的内置模块
path
一些常用方法
resolve:路径拼接,会判读拼接的路径字符串中是否有以/或./或../开头去查找路径basename:文件名dirname:完整路径(不包括文件名)extname:后缀名join:不会判断是否以/或./或../开头而查找路径isAbsolute:是否是绝对路径
resolve
const basePath = '/User/kobe'
const filename = 'demo.txt'
const filepath = basePath + '/' + filename // 有的操作系统是 \
console.log(filepath) // /User/kobe/demo.txt
const path = require('path')
const filepath = path.resolve(basePath, filename)
console.log(filepath) // /User/kobe/demo.txt
fs
获取文件信息
statSync:获取文件信息,同步stat:获取文件信息,异步promises.stat:获取文件信息,Promise
例子
const fs = require('fs')
const filepath = './abc.txt'
// 1.同步操作
const info = fs.statSync(filepath)
console.log('后续需要执行的代码')
console.log(info)
// 2.异步操作
fs.stat(filepath, (err, stats) => {
console.log(stats)
})
console.log('后续需要执行的代码')
// 3.Promise
fs.promises.stat(filepath).then((res) => {
console.log(res)
})
文件描述符
const fs = require('fs')
fs.open('./abc.txt', (err, fd) => {
if (err) {
console.log(err)
} else {
fs.fstat(fd, (err, stats) => {
if (err) {
console.log(err)
} else {
console.log(stats)
}
})
}
})
文件的读写
读取
第二个参数 options 里面的 encoding 决定编码方式,flag 是文件系统标志
const fs = require('fs')
const filepath = './abc.txt'
// 同步
const data = fs.readFileSync(filepath, { encoding: 'utf-8' })
console.log(data)
// 异步
fs.readFile(filepath, { encoding: 'utf-8' }, (err, data) => {
if (err) {
console.log(err)
} else {
console.log(data)
}
})
写入
const fs = require('fs')
const filepath = './abc.txt'
// 1.同步
const err = fs.writeFileSync(filepath, 'write', {})
console.log(err)
// 2.异步
fs.writeFile(filepath, 'write', {}, (err) => {
if (err) {
console.log(err)
}
})
文件夹操作
const fs = require('fs')
// 1.创建文件夹
const dirname = './mkdir-demo'
if (!fs.existsSync(dirname)) {
fs.mkdir(dirname, (err) => {
console.log(err)
})
}
// 2.读取文件夹中的所有文件,一层
const dir = './readdir-demo'
fs.readdir(dir, (err, files) => {
if (err) {
console.log(err)
} else {
console.log(files)
}
})
// 3.文件夹的重命名
const oldPath = './rename'
fs.rename(oldPath, 'rename-demp', (err) => {
console.log(err)
})
events
基础方法
const EventEmitter = require('events')
// 1.创建发射器
const emitter = new EventEmitter()
// 2.监听事件
const listener = (args) => {
console.log('监听到click事件', args)
}
emitter.on('click', listener)
// 3.发射事件
emitter.emit('click', 'Hello', 'emitter')
// 4.关闭监听
emitter.off('click', listener)
emitter.emit('click', 'World')
获取信息
console.log(emitter.eventNames()) // 获取发射的事件
console.log(emitter.listenerCount('click')) // 获取click事件的个数
console.log(emitter.listeners('click')) // 获取click事件的回调函数
其它
emitter.once:添加一次性回调函数emitter.removeAllListeners:移除所有事件,可以传入参数,决定移除哪些事件