node.js内置模块之---fs 模块

news2025/1/7 16:56:20

fs模块的作用

Node.js 中,fs(文件系统)模块提供了与文件系统交互的功能,允许你读取、写入、更新和删除文件,以及操作文件和目录。这个模块是 Node.js 的核心模块之一,主要用于服务器端处理文件系统相关的操作。

fs模块api

1、读取文件

  • fs.readFile(path, options, callback):异步读取文件内容。
  • fs.readFileSync(path, options):同步读取文件内容。
const fs = require('fs');

// 异步读取文件
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

// 同步读取文件
const data = fs.readFileSync('example.txt', 'utf8');
console.log(data);

2、写入文件

  • fs.writeFile(path, data, options, callback):异步写入文件。如果文件不存在则创建文件,文件存在则覆盖。
  • fs.writeFileSync(path, data, options):同步写入文件。
// 异步写入文件
fs.writeFile('output.txt', 'Hello, Node.js!', (err) => {
  if (err) throw err;
  console.log('File has been written!');
});

// 同步写入文件
fs.writeFileSync('output.txt', 'Hello, Node.js!');
console.log('File has been written!');

3、追加文件内容

  • fs.appendFile(path, data, callback):异步追加内容到文件末尾。
  • fs.appendFileSync(path, data):同步追加内容到文件末尾。
// 异步追加文件内容
fs.appendFile('output.txt', '\nThis is an appended text.', (err) => {
  if (err) throw err;
  console.log('Content appended!');
});

// 同步追加文件内容
fs.appendFileSync('output.txt', '\nThis is an appended text.');
console.log('Content appended!');

4、删除文件

  • fs.unlink(path, callback):异步删除文件。
  • fs.unlinkSync(path):同步删除文件。
// 异步删除文件
fs.unlink('output.txt', (err) => {
  if (err) throw err;
  console.log('File deleted!');
});

// 同步删除文件
fs.unlinkSync('output.txt');
console.log('File deleted!');

5、创建目录

  • fs.mkdir(path, options, callback):异步创建目录。
  • fs.mkdirSync(path, options):同步创建目录。
// 异步创建目录
fs.mkdir('newDir', { recursive: true }, (err) => {
  if (err) throw err;
  console.log('Directory created!');
});

// 同步创建目录
fs.mkdirSync('newDir', { recursive: true });
console.log('Directory created!');

6、删除目录

  • fs.rmdir(path, callback):异步删除空目录。
  • fs.rmdirSync(path):同步删除空目录。
// 异步删除目录
fs.rmdir('newDir', (err) => {
  if (err) throw err;
  console.log('Directory removed!');
});

// 同步删除目录
fs.rmdirSync('newDir');
console.log('Directory removed!');

7、检查文件或目录是否存在

  • fs.existsSync(path):同步检查文件或目录是否存在。
  • fs.exists(path, callback):异步检查文件或目录是否存在(已废弃,建议使用 fs.access)。
// 同步检查文件是否存在
if (fs.existsSync('example.txt')) {
  console.log('File exists!');
}

// 异步检查文件是否存在
fs.access('example.txt', fs.constants.F_OK, (err) => {
  if (err) {
    console.log('File does not exist');
  } else {
    console.log('File exists');
  }
});

8、获取文件信息

  • fs.stat(path, callback):异步获取文件或目录的信息。
  • fs.statSync(path):同步获取文件或目录的信息。
// 异步获取文件信息
fs.stat('example.txt', (err, stats) => {
  if (err) throw err;
  console.log(stats);
});

// 同步获取文件信息
const stats = fs.statSync('example.txt');
console.log(stats);

9、文件目录读取

  • fs.readdir(path, callback):异步读取目录内容。
  • fs.readdirSync(path):同步读取目录内容。
// 异步读取目录内容
fs.readdir('./', (err, files) => {
  if (err) throw err;
  console.log(files);
});

// 同步读取目录内容
const files = fs.readdirSync('./');
console.log(files);

主要方法总结:

  • 异步方法(带回调函数)用于非阻塞 I/O 操作,适合大多数场景。
  • 同步方法(不带回调函数)会阻塞程序执行,通常用于脚本或小型程序中。

注意事项:

  • 使用 异步方法 可以提高应用的性能,尤其是在处理大量文件或进行文件 I/O 时。
  • 对于 同步方法,如果程序中的某个文件操作很慢,它会阻塞整个事件循环,可能导致性能问题。

应用场景:

  • 读取配置文件、日志文件。
  • 存储用户上传的文件。
  • 管理文件系统中的数据(如备份、删除、更新文件等)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2272027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

让 Agent 具备语音交互能力:技术突破与应用前景(16/30)

让 Agent 具备语音交互能力:技术突破与应用前景 一、引言 在当今数字化时代,人机交互方式正经历着深刻的变革。从早期的命令行界面到图形用户界面,再到如今日益普及的语音交互,人们对于与机器沟通的便捷性和自然性有了更高的追求…

学生作业完成情况管理程序

网上看到的一个课程设计,正好练练手。 首先设计数据库 数据库有三张表,分别是班级表,学生表,作业成绩表。 学生表中外键关联班级表,作业成绩表中外键关联学生表。具体如下图所示 班级表 学生表学生表外键关联 …

基于vue的商城小程序的毕业设计与实现(源码及报告)

环境搭建 ☞☞☞ ​​​Vue入手篇(一),防踩雷(全网最详细教程)_vue force-CSDN博客 目录 一、功能介绍 二、登录注册功能 三、首页 四、项目截图 五、源码获取 一、功能介绍 用户信息展示:页面顶部设有用户头像和昵称展示区,方便用户识别…

DeepSeek V3“报错家门”:我是ChatGPT

搜 :海讯无双Ai 要说这两天大模型圈的顶流话题,那绝对是非DeepSeek V3莫属了。 不过在网友们纷纷测试之际,有个bug也成了热议的焦点—— 只是少了一个问号,DeepSeek V3竟然称自己是ChatGPT。 甚至让它讲个笑话,生成…

利用webworker解决性能瓶颈案例

目录 js单线程的问题webworker的基本使用webworker的常见应用可视化优化导出Excel js单线程的问题 众所周知,js不擅长计算,计算是同步的,大规模的计算会让js主线程阻塞,导致界面完成卡死。比如有一个600多亿次的计算,…

深入理解卷积神经网络(CNN):图像识别的强大工具

1、引言 卷积神经网络(CNN)是一种深度学习模型,特别适合分析视觉数据。它们在处理图像和视频任务时表现尤为出色。由于CNN在物体识别方面的高效性,这种网络架构广泛应用于计算机视觉领域,例如图像分类、物体检测、面部…

R语言安装教程与常见问题

生物信息基础入门笔记 R语言安装教程与常见问题 今天和大家聊一个非常基础但是很重要的技术问题——如何在不同操作系统上安装R语言?作为生物信息学数据分析的神兵利器,R语言的安装可谓是入门第一步,学术打工人的必备技能。今天分享在Windows…

VOC数据集格式转YOLO格式

将VOC格式的数据集转换为YOLO格式通常涉及以下几个步骤。YOLO格式的标注文件是每个图像对应一个.txt文件&#xff0c;文件中每一行表示一个目标&#xff0c;格式为&#xff1a; <class_id> <x_center> <y_center> <width> <height>其中&#xf…

win10搭建zephyr开发环境

搭建环境基于 zephyr官方文档 基于官方文档一步一步走很快就可以搞定 一、安装chocolatey 打开官网 https://community.chocolatey.org/courses/installation/installing?methodinstall-from-powershell-v3 1、用管理员身份打开PowerShell &#xff08;1&#xff09;执行 …

物体切割效果

1、物体切割效果是什么 在游戏开发中&#xff0c;物体切割效果就是物体看似被切割、分割或隐藏一部分的视觉效果。 这种效果常用与游戏和动画中&#xff0c;比如角色攻击时的切割效果&#xff0c;场景中的墙壁切割效果等等。 2、物体切割效果的基本原理 在片元着色器中判断片…

k8s集群监控系统部署方案

1.方案介绍 本文介绍一种k8s集群监控系统,该系统可以监控k8s集群中的pod和node的性能指标,以及K8s资源对象的使用情况。 监控流程: 集群资源数据采集(cadvisor、node-exporter、kube-state-metrics)-- 数据收集、存储、处理等(prometheus)-- 数据可视化查询和展示(gra…

RP2K:一个面向细粒度图像的大规模零售商品数据集

这是一种用于细粒度图像分类的新的大规模零售产品数据集。与以往专注于相对较少产品的数据集不同&#xff0c;我们收集了2000多种不同零售产品的35万张图像&#xff0c;这些图像直接在真实的零售商店的货架上拍摄。我们的数据集旨在推进零售对象识别的研究&#xff0c;该研究具…

Linux(Centos 7.6)命令详解:ls

1.命令作用 列出目录内容(list directory contents) 2.命令语法 Usage: ls [OPTION]... [FILE]... 3.参数详解 OPTION: -l&#xff0c;long list 使用长列表格式-a&#xff0c;all 不忽略.开头的条目&#xff08;打印所有条目&#xff0c;包括.开头的隐藏条目&#xff09…

比QT更高效的一款开源嵌入式图形工具EGT-Ensemble Graphics Toolkit

文章目录 EGT-Ensemble Graphics Toolkit介绍EGT具备非常高的图形渲染效率EGT采用了非常优秀的开源2D图形处理引擎-Cairo开源2D图形处理引擎Cairo的优势Cairo 2D图像引擎的性能Cairo 2D图像引擎的实际应用案例彩蛋 - 开源EDA软件KiCAD也在使用Cairo EGT高效的秘诀还有哪些Cairo…

密码学精简版

密码学是数学上的一个分支&#xff0c;同时也是计算机安全方向上很重要的基础原理&#xff0c;设置密码的目的是保证信息的机密性、完整性和不可抵赖性&#xff0c;安全方向上另外的功能——可用性则无法保证&#xff0c;可用性有两种方案保证&#xff0c;冗余和备份&#xff0…

WPF通过反射机制动态加载控件

Activator.CreateInstance 是 .NET 提供的一个静态方法&#xff0c;它属于 System 命名空间。此方法通过反射机制根据提供的类型信息。 写一个小demo演示一下 要求&#xff1a;在用户反馈界面点击建议或者评分按钮 弹出相应界面 编写MainWindow.xmal 主窗体 <Window x:C…

C语言 递归编程练习

1.将参数字符串中的字符反向排列&#xff0c;不是逆序打印。 要求&#xff1a;不能使用C函数库中的字符串操作函数。 比如&#xff1a; char arr[] "abcdef"; 逆序之后数组的内容变成&#xff1a;fedcba 1.非函数实现&#xff08;循环&#xff09; 2.用递归方法…

数据插入操作的深度分析:INSERT 语句使用及实践

title: 数据插入操作的深度分析:INSERT 语句使用及实践 date: 2025/1/5 updated: 2025/1/5 author: cmdragon excerpt: 在数据库管理系统中,数据插入(INSERT)操作是数据持久化的基础,也是应用程序与用户交互的核心功能之一。它不仅影响数据的完整性与一致性,还在数据建…

【Linux系列】使用 `nohup` 命令运行 Python 脚本并保存输出日志的详细解析

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【USRP】教程:在Macos M1(Apple芯片)上安装UHD驱动(最正确的安装方法)

Apple芯片 前言安装Homebrew安装uhd安装gnuradio使用b200mini安装好的路径下载固件后续启动频谱仪功能启动 gnu radio关于博主 前言 请参考本文进行安装&#xff0c;好多人买了Apple芯片的电脑&#xff0c;这种情况下&#xff0c;可以使用UHD吗&#xff1f;答案是肯定的&#…