Node常用的内置模块(path、fs、events)

4.1 内置模块path

path模块用于对路径和文件进行处理,提供了很多好用的方法

并且在Mac OS、Linux和window上的路径是不一样的

  • Window上会使用\或者\来作为文件路径的分隔符,目前也支持/
  • 在Mac OS、Linux和Unix操作系统上使用/来作为文件路径的分隔符
4.1.1 path的常见API

从路径中获取信息;

  • dirname:获取文件的父文件夹
  • basename:获取文件名
  • extname:获取文件扩展名

路径的拼接:

  • 如果我们希望将多个路径进行拼接,但是不同的操作系统可能使用的是不同的分隔符

  • 这个时候我们可以使用path.join函数

将文件和某个文件夹拼接

  • 如果我们希望将某个文件和文件夹拼接,可以使用path.resolve
  • resolve函数会判断我们拼接的路径前面是否有/或…/或./
  • 如果有表示是一个绝对路径,会返回对应的拼接路径
  • 如果没有,那么会和当前执行文件所在的文件夹进行路径的拼接

4.2 内置模块fs

fs是File System的缩写,表示文件系统

4.2.1 常用的API

这些API大多数都提供三种操作方式:

  • 方式一:同步操作文件:代码会被阻塞,不会继续执行
  • 方式二:异步回调函数操作文件:代码不会被阻塞,需要传入回调函数,当获取道结果时,回调函数被执行
  • 方式三:异步promise操作文件:代码不会被阻塞,通过fs.promises调用方法操作,会返回一个promise,可以通过then、catch进行处理
const fs = require("fs");
const filepath = "./admin.txt"

// 1.同步操作:statSync返回有关给定文件路径的信息
const info = fs.statSync(filepath)
console.log('被阻塞了');
console.log(info);

// 2.异步操作
fs.stat(filepath,(err,info)=>{
  if(err){
    console.log(err);
    return;
  }
  console.log(info);
})
console.log("没有被阻塞了");

// 3.promise方式
fs.promises.stat(filepath).then(res => {
  console.log(res);
}).catch(err => {
  console.log(err);
})
console.log("没有被阻塞了");
4.2.2 文件的读写

如果我们希望对文件的内容进行操作,这个时候可以使用文件的读写:

  • fs.readFile(path[,options],callback):读取文件的内容
  • fs.writeFile(file,data[,options],callback):在文件中写入内容
 const fs = require("fs");
 let content = "abcsssdd";
 fs.writeFile("./admin.txt",content,{flag:"a+"},err => {
   console.log(err);
 })

在上面的代码中,你会发现有一个大括号没有填写任何内容,这个是写入时填写的option参数:

  • flag:写入的方式

    • w 打开文件写入,默认值
    • w+ 打开文件进行读写,如果不存在则创建文件
    • r+ 打开文件进行读写,如果不存在那么抛出异常
    • r 打开文件读取,读取时的默认值
    • a 打开要写入的文件,将流(内容)放在文件末尾。如果不存在则创建文件
    • a+ 打开文件以进行读写,将流放在文件末尾。如果不存在则创建文件
  • encoding:字符的编码

    • fs.readFile("./admin.txt",{encoding:'utf-8'},(err,data)=>{
        console.log(data);
      })
      
    • 如果读文件时,没有指定编码,文件中的数据会采用Buffer形式返回,例如:<Buffer 61 62 63 73 73 73 64 64 e7 95 a5 e7 95 a5 e7 95 a5>

4.3 events模块

node中的核心API都是基于异步事件驱动的:

  • 在这个体系中,某些对象(发射器(Emitters))发出某一个事件
  • 我们可以监听这个事件(监听器listeners),并且传入的回调函数,这个回调函数会在监听到事件时调用

发出事件和监听事件都是听过EventEmitter类来完成的,它们都属于events对象

  • emitter.on(eventName,listener):监听事件,也可以使用addListener
  • emitter.off(eventName,listener):移除事件监听,也可以使用removeListener
  • emitter.emit(eventName[,...args]):发出事件,可以携带一些参数
// EventEmitter是一个类
const EventEmitter = require("events")

const emmits = new EventEmitter()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值