nodeJs基础Api

2022-09-14 15:12:15 浏览数 (2)

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')移除全部//移除全部

0 人点赞