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()
做个练习
写一个脚本:
-
读取 data.txt
-
转大写
-
写入 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() // 退出进程