path
1.normaliz:将不规则的路径转换为正常路径
代码语言:javascript复制const {normalize} = require('path')
console.log(normalize('./test//b/c'))
//test/b/c
2.join:拼接路径
代码语言:javascript复制const {normalize,join} = require('path')
console.log(join('usr/','test','test/'))
//usr/test/test
3.resolve:返回绝对路径
代码语言:javascript复制const {normalize,join,resolve} = require('path')
console.log(resolve('./'))
4.文件相关
代码语言:javascript复制const {basename,dirname,extname} = require('path')
console.log(basename('./path.js'))// 文件名(path.js)
console.log(dirname('./path.js'))// 路径 (.)
console.log(extname('./path.js'))//文件扩展名 .js
console.log(__dirname);//当前文件所在目录(绝对路径)
fs
1.readfile:读取文件
代码语言:javascript复制const fs = require('fs')
fs.readFile('./path.js','utf8',(err,data)=>{
console.log(data.toString())
})
2.writeFile:写入文件
代码语言:javascript复制const fs = require('fs')
fs.writeFile('./1.txt','THis is file',{
encoding:'utf8'
},err=>{
console.log('done')
})
3.stat:返回文件信息
代码语言:javascript复制const fs = require('fs')
fs.stat('./path.js',(err,stats)=>{
console.log(stats)
})
4.其他文件操作
代码语言:javascript复制fs.rename('./test','test.js',err=>{
})
//删除
fs.unlink('./1,txt',err=>{
})
//读文件夹
fs.readdir('./',err,files=>{
//当前路径所有文件夹
})
//监视/文件/文件夹
fs.watch('./',{
recursive:true//是否递归监听
}(eventType,filenname)=>{
eventType:文件操作类型
})
5.文件流相关
代码语言:javascript复制//以流的方式读取文件
const fs = require('fs')
const rs = fs.createReadStream('./1.txt')//创建一个文件流
rs.pipe(process.stdout)//向控制台导出文件流
// console.log(rs)
代码语言:javascript复制//以流的方式写入文件
const fs = require('fs')
const ws = fs.createWriteStream('./1.txt');
ws.write('test')
ws.end()
代码语言:javascript复制//读写流
const fs = require('fs')
const zlib = require('zlib')
let rs = fs.createReadStream('1.jpg')
let gz = zlib.createGzip();
let ws = fs.createWriteStream('1.gz')
rs.pipe(gz).pipe(ws)
rs.on('error',err=>{
console.log(err);
})
ws.on('finish',()=>(){
console.log('完成');
})
6.解决文件读取地狱回调
代码语言:javascript复制const fs = require('fs')
const {promisify} = require('util')
const read = promisify(fs.readFile);//读取文件,改成promise
async function test(){
const content = await read ('./path.js');
//同步方式异步,直接读取文件
console.log(content.toString())
}
test()
Buffer
处理二进制数据流,类似整数数组,大小固定
代码语言:javascript复制Buffer.alloc(10)//创建一个buffer10个字节,用0填充
Buffer.from([1,2,3])//创建填充1,2,3
Buffer.from('test')//创建buffer填充test
Buffer.byteLength('test')//计算字节数,一个中文占3个字节
Buffer.isBuffer({}//判断对象是否为Buffer
Buffer.concat()//拼接Buffer
实例化buffer方法
代码语言:javascript复制const bf = Buffer.from('r')
bf.length//字节长度与多少东西无关,与创建大小有关
bf.toString()//二进制转换字符串
bf.fill()//向buffer填充其他
bf.equals(bf5)//判断buf内容是否相同
bg.indexOf('es')//判断是否存在es存在返回1不存在返回-1
Buffer中文乱码
代码语言:javascript复制const {StringDecoder}= require('string_decoder')
const decoder = new StringDecoder('utf8')
console.log(decoder.write("订单"))
Events
所有能够触发事件的对象都是EventEmitter类的实例,这个对象开放了EventEmitter.on()函数允许将一个或多个函数绑定到被对象触发的命名事件上。
代码语言:javascript复制const EventEmitter = require('events');
class Event extends EventEmitter {
}
const ce = new Event();
//定义事件test
ce.on('test',()=>{
console.log('4')
})
ce.emit('test')//触发事件返回结果 4
一次性事件
代码语言:javascript复制ce.once('test',(){
console.log('test')
})
ce.emit('test')
移除事件
代码语言:javascript复制function fn1(){
}
function fn2(){
}
ce.on('test',fn1)
ce.on('test',fn2)
ce.removeListener('test',fn2);//一次单个事件
ce.remoceAllListener('test')移除全部//移除全部