nodejs fs 模块的简介与相关案例

fs 文件系统模块

什么是 fs 文件系统模块?

  • fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作要求。*

例如:

  • fs.readFile() 方法用来读取文件内容。
  • fs.writeFile() 方法用来写入文件内容。
  • fs.mkdir() 方法用来创建目录。
  • fs.rmdir() 方法用来删除目录。
  • fs.readdir() 方法用来读取目录中的文件和子目录。
  • fs.stat() 方法用来获取文件或目录的状态。
  • fs.rename() 方法用来重命名文件或目录。
  • fs.unlink() 方法用来删除文件。
引入 fs 模块
javascript 复制代码
const fs = require("fs"); // 引入 fs 模块

读取指定文件中的内容

fs.readFile() 的语法格式

javascript 复制代码
fs.readFile(path, [options], callback);
  1. path:必选参数,字符串,表示文件的路径。
  2. options:可选参数,表示以什么编码格式来读取文件。
  3. callback:必选参数,文件读取完成之后,通过回调函数拿到读取的结果。
javascript 复制代码
// 1. 导入 fs 模块,来操作文件
const fs = require("fs");

/**
 * 2. 调用 fs.readFile() 方法,读取文件内容
 *   参数1:读取文件的存放路径
 *  参数2:读取文件的编码格式,默认是 utf8
 *  参数3:回调函数,读取完成之后,通过回调函数拿到读取的结果
*/
fs.readFile(path, (err, data) => {
  /**
   * 2.1 处理读取结果
   *   如果读取成功,err 为 null,data 为读取到的内容
   *   如果读取失败,err 为 Error 对象,data 为 undefined
   */
  // 打印失败的结果
  
  if (err) return console.log('读取文件失败:', err);
  console.log('-----------------')

  // 打印成功的结果
  console.log('data:', data);
  */
});

向指定的文件中写入内容

fs.writeFile() 的语法格式

javascript 复制代码
fs.writeFile(path, data, [options], callback);
  1. path:必选参数,字符串,表示文件的路径。
  2. data:必选参数,字符串或 Buffer,表示要写入的内容。
  3. options:可选参数,表示以什么编码格式来写入文件。
  4. callback:必选参数,文件写入完成之后,通过回调函数通知写入结果。
javascript 复制代码
// 1. 导入 fs 模块,来操作文件
const fs = require("fs");

/**
 * 2. 调用 fs.writeFile() 方法,向文件中写入内容
 *   参数1:写入文件的存放路径
 *  参数2:写入的内容,可以是字符串或 Buffer
 *  参数3:写入文件的编码格式,默认是 utf8
 *  参数4:回调函数,写入完成之后,通过回调函数通知写入结果
*/
fs.writeFile(path, data, (err) => {
  /**
   * 2.1 处理写入结果
   *   如果写入成功,err 为 null
   *   如果写入失败,err 为 Error 对象
   */
  // 打印失败的结果
  if (err) return console.log('写入文件失败:', err);
  console.log('写入文件成功');
});

## fs 模块 - 路径动态拼接问题

在实际开发中,我们经常会遇到路径拼接的问题,比如:

javascript 复制代码
const path = require('path');
const filePath = path.join(__dirname, 'data', 'file.txt');
  1. __dirname:当前文件的绝对路径。
  2. data:子目录名称。
  3. file.txt:文件名称。

这样的写法,虽然可以解决问题,但是不够灵活。比如:

  • 如果文件路径需要根据运行环境动态变化,比如:data/file.txtdata/file2.txt,那么就需要在代码中硬编码。
  • 如果文件路径需要根据运行参数动态变化,比如:data/${param}/file.txt,那么就需要在代码中动态拼接。

为了解决这个问题,fs 模块提供了 path 对象,可以用来处理路径相关的操作。

path.join() 方法

path.join() 方法可以用来拼接路径。

javascript 复制代码
const path = require('path');
const filePath = path.join(__dirname, 'data', 'file.txt');
console.log(filePath); // d:\project\Yh\note\node\data\file.txt
  1. __dirname:当前文件的绝对路径。
  2. data:子目录名称。
  3. file.txt:文件名称。
相关推荐
从文处安1 小时前
「九九八十一难」第一难:前端数据mock指南(TS + VUE)
前端
小程故事多_801 小时前
Agent Infra核心技术解析:Sandbox sandbox技术原理、选型逻辑与主流方案全景
java·开发语言·人工智能·aigc
沐知全栈开发1 小时前
SQL 日期处理指南
开发语言
黎雁·泠崖1 小时前
【魔法森林冒险】3/14 Allen类(一):主角核心属性与初始化
java·开发语言
黎雁·泠崖1 小时前
【魔法森林冒险】1/14 项目总览:用Java打造你的第一个回合制冒险游戏
java·开发语言
独好紫罗兰1 小时前
对python的再认识-基于数据结构进行-a006-元组-拓展
开发语言·数据结构·python
C++ 老炮儿的技术栈2 小时前
Qt 编写 TcpClient 程序 详细步骤
c语言·开发语言·数据库·c++·qt·算法
Zhencode2 小时前
Vue3 响应式依赖收集与更新之effect
前端·vue.js
x-cmd2 小时前
[x-cmd] jsoup 1.22.1 版本发布,引入 re2j 引擎,让 HTML 解析更安全高效
前端·安全·html·x-cmd·jsoup
yuuki2332332 小时前
【C++】继承
开发语言·c++·windows