Node.js 中文件系统模块(fs
)的详细总结,包括定义、作用、各种写入方式及使用场景:
🧩 一、fs
模块简介
✅ 定义
fs
(File System)是 Node.js 官方内置模块,用于实现对文件和目录的操作。
✅ 作用
可以与硬盘文件系统进行交互,支持以下操作:
- 创建文件 / 文件夹
- 删除文件 / 文件夹
- 重命名、移动文件
- 写入 / 读取文件内容
- 读取 / 修改文件权限
- 操作文件流(读写大文件)
✍️ 二、写入文件的方式
1. 同步写入 fs.writeFileSync(path, data[, options])
const fs = require('fs');
fs.writeFileSync('test.txt', 'Hello Node.js');
- 📌 阻塞主线程,适用于脚本执行环境或初始化配置写入。
- ✅ 使用场景:程序启动前写入配置文件、小文件快速写入等。
2. 异步写入 fs.writeFile(path, data[, options], callback)
const fs = require('fs');
fs.writeFile('test.txt', 'Hello Async!', (err) => {if (err) throw err;console.log('写入完成');
});
- 📌 非阻塞主线程,更加推荐在服务中使用。
- ✅ 使用场景:高并发写入、Web 接口处理时写日志、缓存等。
3. 同步追加写入 fs.appendFileSync(path, data[, options])
fs.appendFileSync('log.txt', '日志记录A\n');
- 📌 用于在文件末尾追加内容,阻塞执行。
- ✅ 使用场景:脚本执行中逐步记录日志。
4. 异步追加写入 fs.appendFile(path, data[, options], callback)
fs.appendFile('log.txt', '日志记录B\n', (err) => {if (err) throw err;
});
- 📌 追加内容,不覆盖原文件,异步执行。
- ✅ 使用场景:日志系统、用户行为记录等。
💧 三、流式写入(适合大文件)
使用 fs.createWriteStream(path[, options])
const fs = require('fs');
const writeStream = fs.createWriteStream('bigfile.txt');writeStream.write('第一段内容\n');
writeStream.write('第二段内容\n');
writeStream.end('结束内容\n');
- 📌 优点:支持分段写入、内存使用更少。
- ✅ 使用场景:
- 写入大型日志、音视频文件
- 实时写入数据(如上传转存)
📑 四、使用场景对比表
用法 | 是否异步 | 特点 | 适用场景 |
---|---|---|---|
writeFileSync | ❌ 同步 | 简单快速,阻塞主线程 | 初始化写配置,小文件 |
writeFile | ✅ 异步 | 推荐使用,不阻塞 | 高并发写操作 |
appendFileSync | ❌ 同步 | 顺序追加,简单可靠 | 单线程追加日志 |
appendFile | ✅ 异步 | 推荐用于日志等追加 | 用户行为记录,报错日志 |
createWriteStream | ✅ 异步 | 写入大文件、性能好 | 音视频、日志流、长连接数据 |
🧠 补充:写入选项说明
在写入方法中,可使用 options
参数来自定义格式,如:
fs.writeFileSync('example.txt', '内容', {encoding: 'utf8',flag: 'w' // 'w'写入 'a'追加
});
如果你还需要了解 读取文件的方式 或 fs/promises
的 Promise 写法版本,我也可以详细补充,要不要一并讲讲?