Day 4|Node.js 文件系统、路径与进程管理

Part 1 fs 文件系统模块

官方模块:Node.js Foundation 维护的核心模块

Node 本质:

后端程序 = 操作文件 + 操作网络 + 操作进程


读取文件(同步 vs 异步)

同步版本(阻塞)

javascript 复制代码
const fs = require('fs')

const data = fs.readFileSync('./data.txt', 'utf-8')
console.log(data)

特点:

  • 会阻塞线程

  • 文件没读完,程序不能继续执行


异步版本(推荐)

javascript 复制代码
const fs = require('fs')

fs.readFile('./data.txt', 'utf-8', (err, data) => {
  if (err) throw err
  console.log(data)
})

或者 Promise 版本

javascript 复制代码
const fs = require('fs/promises')

async function main() {
  const data = await fs.readFile('./data.txt', 'utf-8')
  console.log(data)
}

main()

做个练习

写一个脚本:

  1. 读取 data.txt

  2. 转大写

  3. 写入 out.txt

例子

javascript 复制代码
const fs = require('fs/promises')
const path = require('path')

async function main() {
  try {
    // 构造文件路径(后端标准写法)
    const inputPath = path.join(__dirname, 'data.txt')
    const outputPath = path.join(__dirname, 'out.txt')

    // 读取文件
    const data = await fs.readFile(inputPath, 'utf-8')

    // 转大写
    const upperData = data.toUpperCase()

    // 写入文件
    await fs.writeFile(outputPath, upperData)

    console.log('写入成功 ✅')
  } catch (err) {
    console.error('发生错误 ❌', err)
  }
}

main()

Part 2 path 模块

跨平台路径处理核心模块。

javascript 复制代码
const path = require('path')

常用 API

javascript 复制代码
path.join(__dirname, 'a.txt')
path.resolve('a.txt')
path.basename('/a/b/c.txt')
path.extname('index.js')

方法 作用 是否处理绝对路径 返回值 典型使用场景 示例 输出结果
path.join() 拼接路径并自动处理分隔符 ❌ 不会强制转绝对路径 规范化后的路径 拼接目录和文件名 path.join(__dirname, 'a.txt') /当前目录/a.txt
path.resolve() 解析为绝对路径 ✅ 一定返回绝对路径 绝对路径 获取文件真实物理路径 path.resolve('a.txt') /当前工作目录/a.txt
path.basename() 获取文件名 ❌ 文件名 从完整路径提取文件名 path.basename('/a/b/c.txt') c.txt
path.extname() 获取文件扩展名 ❌ 扩展名(含 .) 判断文件类型 path.extname('index.js') .js

Pat 3 process 模块

Node 本质是一个进程。


常用属性

bash 复制代码
process.cwd()      // 当前工作目录
process.env        // 环境变量
process.argv       // 命令行参数
process.pid        // 进程ID
process.exit()     // 退出进程

相关推荐
小天源10 小时前
智叟云集系统架构解析:从品牌 AI 可见度监测到前后端协同
人工智能·react.js·系统架构·node.js·react·ai监测·ai品牌监测
用户61227166502418 小时前
电费 9 毛/天:我让一台 9 年前的旧 MacBook 替我上班,它比入门云服务器还能打
node.js
PegasusYu18 小时前
Node.js使用nedb轻量级数据库测试脚本
数据库·electron·node.js·脚本·测试·轻量级·nedb
WebInfra21 小时前
Rsdoctor 2.0 发布:Agent 驱动的全自动优化工具
前端·javascript·node.js
DevUp1 天前
标着 JavaScript 的 Wiki 与知识库:既不是 CMS 也不是 SSG(番外三)
javascript·node.js·cms
毕业设计7031 天前
(免费领源码)基于node的学生公寓管理系统06412- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·mysql·node.js·maven·mybatis·express·b/s
damoluomu2 天前
SSG 的后台怎么补:Node.js 生态里的三条路(番外二)
javascript·css·typescript·node.js·html
花开富贵城2 天前
使用fnm安装node.js包管理器
node.js
濮水大叔2 天前
NestJS Dynamic Providers 与 Cabloy/Vona Provider Scene:同接口多实现的两种装配哲学
typescript·node.js·nestjs
silvamux_3 天前
Node.js 调用大模型 API 排错实录
node.js