Node.js 中文件系统模块(`fs`)的详细总结,包括定义、作用、各种写入方式及使用场景

Node.js 中文件系统模块(fs)的详细总结,包括定义、作用、各种写入方式及使用场景:


🧩 一、fs 模块简介

✅ 定义

fs(File System)是 Node.js 官方内置模块,用于实现对文件和目录的操作。

✅ 作用

可以与硬盘文件系统进行交互,支持以下操作:

  • 创建文件 / 文件夹
  • 删除文件 / 文件夹
  • 重命名、移动文件
  • 写入 / 读取文件内容
  • 读取 / 修改文件权限
  • 操作文件流(读写大文件)

✍️ 二、写入文件的方式

1. 同步写入 fs.writeFileSync(path, data[, options])

js 复制代码
const fs = require('fs');
fs.writeFileSync('test.txt', 'Hello Node.js');
  • 📌 阻塞主线程,适用于脚本执行环境或初始化配置写入。
  • ✅ 使用场景:程序启动前写入配置文件、小文件快速写入等。

2. 异步写入 fs.writeFile(path, data[, options], callback)

js 复制代码
const fs = require('fs');
fs.writeFile('test.txt', 'Hello Async!', (err) => {
  if (err) throw err;
  console.log('写入完成');
});
  • 📌 非阻塞主线程,更加推荐在服务中使用。
  • ✅ 使用场景:高并发写入、Web 接口处理时写日志、缓存等。

3. 同步追加写入 fs.appendFileSync(path, data[, options])

js 复制代码
fs.appendFileSync('log.txt', '日志记录A\n');
  • 📌 用于在文件末尾追加内容,阻塞执行。
  • ✅ 使用场景:脚本执行中逐步记录日志。

4. 异步追加写入 fs.appendFile(path, data[, options], callback)

js 复制代码
fs.appendFile('log.txt', '日志记录B\n', (err) => {
  if (err) throw err;
});
  • 📌 追加内容,不覆盖原文件,异步执行。
  • ✅ 使用场景:日志系统、用户行为记录等。

💧 三、流式写入(适合大文件)

使用 fs.createWriteStream(path[, options])

js 复制代码
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 参数来自定义格式,如:

js 复制代码
fs.writeFileSync('example.txt', '内容', {
  encoding: 'utf8',
  flag: 'w' // 'w'写入 'a'追加
});

如果你还需要了解 读取文件的方式 或 fs/promises 的 Promise 写法版本,我也可以详细补充,要不要一并讲讲?

相关推荐
小天源3 小时前
智叟云集系统架构解析:从品牌 AI 可见度监测到前后端协同
人工智能·react.js·系统架构·node.js·react·ai监测·ai品牌监测
用户61227166502411 小时前
电费 9 毛/天:我让一台 9 年前的旧 MacBook 替我上班,它比入门云服务器还能打
node.js
PegasusYu12 小时前
Node.js使用nedb轻量级数据库测试脚本
数据库·electron·node.js·脚本·测试·轻量级·nedb
WebInfra14 小时前
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_2 天前
Node.js 调用大模型 API 排错实录
node.js