当前位置: 首页 > news >正文

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

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 写法版本,我也可以详细补充,要不要一并讲讲?

相关文章:

  • WebSocket 用法
  • 【Linux】线程同步与互斥 (生产者消费者模型)
  • YOLOV8 OBB 海思3516训练流程
  • 【c++深入系列】:new和delete运算符详解
  • 【spark3.2.4】--完全分布式集群搭建
  • .net core 使用 freesql 备份结构和数据
  • 盈达科技:重新定义GEO优化的技术边界与商业未来​
  • Linux权限机制:用户与组权限深度剖析
  • ngx_epoll_conf_t
  • 前端VUE框架理论与应用(7)
  • 【LangChain实战】构建下一代智能问答系统:从RAG架构到生产级优化
  • Z.ai - 智谱简洁优雅的聊天新界面
  • 学习笔记十三—— 理解 Rust 闭包:从语法到 impl Fn vs Box<dyn Fn>
  • 工作记录3
  • Spark-Sql编程(三)
  • 计算机视觉——基于人工智能视觉注意力的在线广告中评估检测技术
  • 二进制求和 - 简单
  • 数据加载与保存
  • Ubuntu服务器中了木马且处于局域网内无法直接通过公网正向连接
  • Mac OS系统下kernel_task占用大量CPU资源导致系统卡顿
  • 网站建设风格有哪些/小红书sem是什么意思
  • 北京网站建设q.479185700強/网站设计公司上海
  • 青岛企业如何建网站/最新热点新闻
  • 响应式网站建设特色/关键词竞价排名是什么意思
  • 网站的定位分析/安徽网站seo公司
  • 建设银行住房贷款网站/百家号自媒体平台注册