nodejs fs 模块的简介与相关案例
fs
文件系统模块
什么是 fs
文件系统模块?
fs
模块是Node.js
官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作要求。*
例如:
fs.readFile()
方法用来读取文件内容。fs.writeFile()
方法用来写入文件内容。fs.mkdir()
方法用来创建目录。fs.rmdir()
方法用来删除目录。fs.readdir()
方法用来读取目录中的文件和子目录。fs.stat()
方法用来获取文件或目录的状态。fs.rename()
方法用来重命名文件或目录。fs.unlink()
方法用来删除文件。
引入 fs
模块
const fs = require("fs"); // 引入 fs 模块
读取指定文件中的内容
fs.readFile()
的语法格式
fs.readFile(path, [options], callback);
path
:必选参数,字符串,表示文件的路径。options
:可选参数,表示以什么编码格式来读取文件。callback
:必选参数,文件读取完成之后,通过回调函数拿到读取的结果。
// 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()
的语法格式
fs.writeFile(path, data, [options], callback);
path
:必选参数,字符串,表示文件的路径。data
:必选参数,字符串或 Buffer,表示要写入的内容。options
:可选参数,表示以什么编码格式来写入文件。callback
:必选参数,文件写入完成之后,通过回调函数通知写入结果。
// 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
模块 - 路径动态拼接问题
在实际开发中,我们经常会遇到路径拼接的问题,比如:
const path = require('path');
const filePath = path.join(__dirname, 'data', 'file.txt');
__dirname
:当前文件的绝对路径。data
:子目录名称。file.txt
:文件名称。
这样的写法,虽然可以解决问题,但是不够灵活。比如:
- 如果文件路径需要根据运行环境动态变化,比如:
data/file.txt
和data/file2.txt
,那么就需要在代码中硬编码。 - 如果文件路径需要根据运行参数动态变化,比如:
data/${param}/file.txt
,那么就需要在代码中动态拼接。
为了解决这个问题,fs
模块提供了 path
对象,可以用来处理路径相关的操作。
path.join()
方法
path.join()
方法可以用来拼接路径。
const path = require('path');
const filePath = path.join(__dirname, 'data', 'file.txt');
console.log(filePath); // d:\project\Yh\note\node\data\file.txt
__dirname
:当前文件的绝对路径。data
:子目录名称。file.txt
:文件名称。