【Node.js】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的世界中编程愉快!