Appearance
Node.js 的文件 I/O、路径与目录操作
文件 I/O 是 Node.js 最基础、也最常被前端工程直接用到的一组能力。
因为构建工具、脚手架、批量脚本、代码生成、资源处理,本质上都离不开:读文件、写文件、找路径、遍历目录。
1. 文件 I/O 在解决什么问题
Node.js 让 JavaScript 可以直接处理本地文件系统。
这意味着前端工程里可以很自然地做这些事:
- 读取配置文件
- 扫描项目目录
- 生成代码
- 修改静态资源
- 输出构建产物
2. fs 和 path 分别做什么
2.1 fs
fs 主要负责文件系统读写和目录操作。
2.2 path
path 主要负责路径拼接、解析和规范化。
更具体一点:
fs负责“操作文件和目录”path负责“处理路径字符串”
3. 为什么更推荐异步 I/O
Node.js 既提供同步 API,也提供异步 API。
在很多工程脚本里,同步 API 用起来会更直接;但在服务端请求处理中,异步 I/O 通常更合适,因为它不会长时间阻塞主线程继续处理其他任务。
4. 一个最基础的读写示例
js
import { readFile, writeFile } from 'node:fs/promises'
const content = await readFile('./input.txt', 'utf8')
await writeFile('./output.txt', content.toUpperCase())这里最关键的是:
- 读取文件
- 修改内容
- 再写回新文件
5. 路径为什么不能随便拼字符串
很多人会直接写:
js
const filePath = dir + '/' + fileName这在简单场景下可能能跑,但工程上更稳的做法通常是:
js
import path from 'node:path'
const filePath = path.join(dir, fileName)因为路径分隔符、相对路径和规范化问题,不同环境下都可能带来差异。
6. 常见目录操作
前端工程脚本里还很常见:
- 创建目录
- 删除目录
- 递归扫描文件
- 判断文件是否存在
这些操作通常服务于:
- 脚手架初始化
- 构建产物输出
- 批量文件处理
- 内容生成
7. 一份检查清单
使用 Node.js 文件能力时,至少可以自查:
- 当前场景适合同步还是异步 I/O
- 路径是否使用了
path模块处理 - 目录是否可能不存在
- 是否考虑了读写失败和权限问题
8. 小结
如果压缩成一句话,可以记住:
Node.js 的文件 I/O 和路径处理能力,是前端工程脚本、构建工具和代码生成工具最常见的底层基础。