【Node.js】fs与path模块的基础使用

文章目录

  • 前言
  • 一、什么叫做模块
  • 二、fs模块
    • 2.1 fs模块是干什么的?
    • 2.2 fs模块的使用
      • 导入fs模块
      • 读取文件的内容
      • 写入文件内容
      • 处理路径问题
      • path路径模块
  • 总结


前言

在Node.js中,fs模块(文件系统模块)是一个重要的核心模块,它提供了对文件系统进行各种操作的能力。无论是读取文件内容、写入文件,还是创建、删除目录,fs模块都是不可或缺的工具之一。本文将深入探讨fs模块的基础使用,帮助开发者更好地理解如何在Node.js环境中进行文件操作,从而为构建文件处理相关的应用打下坚实基础。


一、什么叫做模块

在Node.js中,模块是一种组织和封装代码的机制,用于将应用程序拆分为独立且可维护的部分。每个模块都有自己的作用域,可以包含变量、函数、类等,这样可以有效地避免全局作用域的污染和命名冲突。

二、fs模块

2.1 fs模块是干什么的?

fs 模块是 Node.js 中的一个核心模块,用于处理文件系统操作。它提供了一系列的方法,使得你可以对文件和目录进行读取、写入、更新、删除等操作。以下是一些常见的 fs 模块的功能:

文件读写操作: fs 模块提供了读取和写入文件的方法,可以同步或异步地进行操作。这包括了文本文件和二进制文件的读写。

目录操作: 可以创建、删除、读取目录,以及获取目录下的文件列表等。

文件和目录信息: 提供了获取文件和目录信息的方法,如文件大小、创建时间、修改时间等。

文件重命名和删除: 可以通过 fs.rename() 方法进行文件重命名,通过 fs.unlink() 方法删除文件。

文件流操作: fs 模块支持使用文件流进行读写操作,这对于处理大型文件或流式数据非常有用。

文件权限操作: 可以设置和获取文件的权限信息,以及判断当前用户对文件的权限。

符号链接操作: 提供了创建、读取和删除符号链接的方法。

总的来说,fs 模块为 Node.js 提供了丰富的文件系统操作功能,使得开发者可以轻松地进行文件和目录的处理,适用于各种应用场景,从简单的文件读写到复杂的文件系统操作。通过这个模块,Node.js 可以方便地与本地文件系统进行交互,是构建文件处理和文件管理应用的重要工具。

2.2 fs模块的使用

导入fs模块

我们可以使用require函数导入指定的模块
参数填我们要导入的模块名称,我们可以通过使用返回值操作这个模块

const fs = require('fs')

读取文件的内容

语法格式:

fs.readFile(path[,options],callback)

用中括号表示是可选的参数
参数解读
参数1:必选参数,字符串,表示文件的路径。
参数2:可选参数,表示以什么编码格式来读取文件
参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果

示例代码:

const fs = require('fs')fs.readFile('./fsTest.txt','utf8',(err,data)=>{console.log(data)console.log('--------------------------------')console.log(err)
})

中间的就是我们的可选参数

在这里插入图片描述
这样我们就把文件里面的东西读出来了。
回调函数的第一个参数是判断是否有错误的如果成功则返回null,如果读取失败,则 err 的值为 错误对象,
data 的值为 undefined、第二个参数是文件里面的数据

err可以通过message打印里面的错误信息

写入文件内容

语法格式:

fs.writeFile(file, data[, options], callback)

参数解读:
参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径
参数2:必选参数,表示要写入的内容
参数3:可选参数,表示以什么格式写入文件内容,默认值是 utf8。
参数4:必选参数,文件写入完成后的回调函数。

示例代码:

const fs = require('fs')fs.writeFile('./fsTest.txt','Hello Write File',(err)=>{console.log(err)
})

回调函数的第一个参数是判断是否有错误的如果成功则返回null,如果读取失败,则 err 的值为 错误对象,err可以通过message打印里面的错误信息
在这里插入图片描述
除了上面这个还有一个尾添加的函数,上面那个写了会把原来的覆盖,如果你不想覆盖可以使用下面这个:

fs.appendFile(file, data[, options], callback)

示例代码:

const fs = require('fs');const filePath = 'example.txt';
const newData = 'This data will be appended to the file.';// 使用 fs.appendFile 追加数据到文件
fs.appendFile(filePath, newData, 'utf8', (err) => {if (err) {console.error('Error appending to file:', err);} else {console.log('Data appended to file successfully.');}
});

处理路径问题

为什么会出现这个问题:
在使用 fs 模块操作文件时,如果提供的操作路径是以 ./或 …/ 开头的相对路径时,很容易出现路径动态拼接错误的问题.
原因:代码在运行的时候,会以执行 node 命令时所处的目录,动态拼接出被操作文件的完整路径.

面对这个问题,我们可以提供完整的路径,但是这个方法可维护性不好
node.js提供了一个变量,表示当前文件的路径__dirname我们可以使用它来解决

path路径模块

Node.js 中的 path 模块用于处理文件路径和目录路径,提供了一些实用的方法来操作路径字符串。path 模块是 Node.js 核心模块之一,因此无需额外安装即可使用。

路径的拼接:

path.join()

使用示例:

const path = require('path')const str = path.join('/a','/b/c','../','./d','e')console.log(str);

在这里插入图片描述


总结

通过本文,我们对Node.js中的fs模块有了基础的了解,并学会了如何读取文件、写入文件,以及进行简单的目录操作。文件系统操作是Node.js应用中常见的任务之一,熟练使用fs模块将使开发者能够更高效地处理文件相关操作,提升应用的文件管理能力。在实际项目中,深入学习和灵活运用fs模块将成为打造强大Node.js应用的重要一环。希望本文能够为你在Node.js文件系统操作方面的学习提供帮助,愿你在Node.js的世界中编程愉快!

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

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

相关文章

【操作系统】调用硬盘并且实现MBR与Loader的过渡——实战篇

一.概述 有了上一篇文章:【操作系统】调用硬盘并且实现MBR与Loader的过渡——原理篇的理论支持,我们就可以开始代码实操了,接下来我们将优化MBR程序,使其从扇区中读取出loader加载器,并将其存放到内存处,将…

excel怎么设置密码?轻松保护您的工作表

在数字化时代,数据的安全性显得尤为重要。excel作为我们日常工作中广泛使用的办公软件,其中可能包含了大量的敏感数据。为了确保这些数据不被未授权的人访问,本文将为您详细介绍excel怎么设置密码,从而有效地保护您的数据安全。 方…

基于Redis的高可用分布式锁——RedLock

目录 RedLock简介 RedLock工作流程 获取锁 释放锁 RedLock简介 Redis作者提出来的高可用分布式锁由多个完全独立的Redis节点组成,注意是完全独立,而不是主从关系或者集群关系,并且一般是要求分开机器部署的利用分布式高可以系统中大多数存…

delphi fmxui 做的一些跨平台app

pascal语音显然已经没落,但delphi还在坚挺着,每年都会发布新版本, 主要是做跨平台应用。 如果你觉得qt qml 写android app 比较麻烦,那可以尝试delphi 12,可以用c builder 尝试 android,ios 开发 下面的…

适用于 Windows 7/8/10/11电脑的 12 款顶级数据恢复软件

很多时候,我们在 Windows 7 /8/10/11下不小心按了删除键,从而丢失了硬盘或 USB 驱动器中的重要文件和数据。在某些情况下,病毒或软件错误可能会损坏您的硬盘,从而影响您的文件。在这种情况下,您迫切需要一款适用于 Win…

Labview 图像处理系统设计

1. 总体主界面设计 前面板界面如下: 界面总共分为一个实时采集加拍照控制模块,两个图像显示模块(实时图像显示和直方图显示)以及三个图像处理模块 前面板中各模块具体功能及使用说明如下: 1.当实时按钮关闭时&#x…

mysql .ibd 文件过大清理方法

问题 有一个 info_track 表用来临时存储告警推送数据,逻辑处理完成后,会执行 Delete 语句删除对应的记录。 问题:项目现场运行了几个月后,发现磁盘空间莫名占用了过多的存储,> 100GB,且无法释放。 生…

向上调整向下调整算法

目录 AdjustUp向上调整 AdjustDown向下调整 AdjustUp向上调整 前提是:插入数据之后,除去插入的数据其他的数据还是为堆 应用:插入数据。 先插入一个10到数组的尾上,再进行向上调整算法,直到满足堆。 性质&#xff1…

基础算法(二)

一 高精度计算 int能表示范围为2^32,这看起来很大,但在大数据时代的如今,不说是int 哪怕是long long也是不够的,那么为了使用或计算这些超出或远超整形大小的数,我们这些数的计算方法称为高精度计算。 (1)…

代码随想录 Leetcode113. 路径总和 II

题目&#xff1a; 代码(首刷看解析 2024年1月30日&#xff09;&#xff1a; class Solution { public:vector<int> temp;vector<vector<int>> res;void recursion(TreeNode* cur, int sum) {if (!cur->left && !cur->right && sum 0…

Java进击框架:Spring-WebFlux(九)

Java进击框架&#xff1a;Spring-WebFlux&#xff08;九&#xff09; 前言Mono和FluxSpring WebFlux反应的核心DispatcherHandler带注释的控制器WebFlux配置 WebClient配置retrieve()交换请求正文Filters属性语境同步使用测试 RSocket反应库 前言 Spring框架中包含的原始web框…

Jmeter分布式场景

Jmeter分布式 1. 为什么使用Jmter分布式测试 1.1 需求 对学院接口(查询学院-所有)进行1000用户并发访问&#xff0c;测试服务器处理批量请求能力1.2 现状 我们单台电脑由于配置(CPU、内存)问题&#xff0c;最模拟500用户时&#xff0c;就出现卡死现象按照一般的压力机配置&…

1. 两数之和(力扣LeetCode)

文章目录 1. 两数之和题目描述哈希表&#xff1a;map二分查找暴力&#xff1a;双重for循环 1. 两数之和 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可…

24. 两两交换链表中的节点(力扣LeetCode)

文章目录 24. 两两交换链表中的节点题目描述解题思路只使用一个临时节点使用两个临时节点 24. 两两交换链表中的节点 题目描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff0…

angular2 开发遇到的问题

1&#xff1a;插件使用&#xff0c;要一同引入 不然报错 “ \ Changes detected. Rebuilding...X [ERROR] NG8001: sf-dashboard-overview is not a known element:”

微信扫码登录流程

微信官方文档使用 搜索“微信开放平台”点击导航栏的“资源中心”点击“网站应用”下的“微信登录功能”地址微信扫码登录是基于OAuth2的&#xff0c;所以需要第三方应用&#xff08;就是实现微信扫码登录的应用&#xff09;成为微信的客户端&#xff0c;获取AppId和AppSecret…

Linux 进程管理

一、简述 当运行一个程序的时候&#xff0c;那么运行的这个程序就叫做进程。程序&#xff0c;是一个静态的概念统称为软件&#xff0c;相当于一个被编译好可执行的二进制文件&#xff0c;同时程序可以长期存在系统中&#xff1b;进程&#xff0c;是一个动态的概念&#xff0c;…

RHCE练习3

1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab 2.给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c;基于www.openlab.com/student 网站访问学生信息&#xff0c;www.openlab.com/data网站访问教学资料www.openlab.com/mo…

Unix环境高级编程-学习-04-匿名管道PIPE

目录 一、环境 二、介绍 三、C标准函数介绍 1、pipe 2、popen 3、pclose 4、注意 四、宏 五、常见的管道用法 1、一对一&#xff08;父进程读子进程写一条管道&#xff09; 2、一对一&#xff08;父进程写子进程读一条管道&#xff09; 3、一对多&#xff08;父进程…

leetcode—跳跃游戏—贪心算法

1 跳跃游戏1 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&a…