import Breadcrumb from '../../../components/Breadcrumb'

fs 模块是 Node 提供的用来操作文件的模块。用来满足对文件操作的需求。

  • fs.readFile()方法,读取指定文件的内容。
  • fs.writeFile() 方法,向指定文件写入内容。

导入

fs 文件模块是 Node 自带的模块,因此只要导入模块即可。

const fs=require('fs');

读取指定文件的内容

语法格式

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

参数解读:

  • path : 必选参数。字符串,标明文件的路径。
  • options : 可选参数。标识编码格式。
  • callback : 必选参数,文件读取完成后要执行的回调函数。

示例代码

使用 utf8 编码格式读取指定文件的内容,并打印 err 和 dataStr 的值。

const fs=require('fs');
fs.readFile('./files/11.txt','utf8',function(err,dataStr){
    // 无论是否读取成功都会执行回调函数,这整个函数作为参数
    console.log(err);
    console.log('----');// 分割线
    console.log(dataStr);// 读取成功的结果
})

用 VScode 创建一个工程。

创建 api.js 文件,内容如下:

const fs = require("fs");
fs.readFile("11.txt", "utf8", function (err, dataStr) {
  // 无论是否读取成功都会执行回调函数,这整个函数作为参数
  console.log(err);
  console.log("----"); // 分割线
  console.log(dataStr); // 读取成功的结果
});

在同层级目录下创建文件 11.txt :

1111

在终端执行这段代码:

2

可以见得,该方法成功读取了这个文本文件,并返回了正确的值。

null
----
1111

因为没有发生错误,所以 err 参数值为 null 。

我们不妨试一下,让这段代码读取不存在的文件。这次应该会有 err 报错。

const fs = require("fs");
fs.readFile("no.txt", "utf8", function (err, dataStr) {
  // 无论是否读取成功都会执行回调函数,这整个函数作为参数
  console.log(err);
  console.log("----"); // 分割线
  console.log(dataStr); // 读取成功的结果
});

3

正如预期的,返回了错误对象以及不存在数据值。

判断文件是否读取成功

const fs = require('fs');
 
fs.readFile('11.txt', 'utf8', function (err, dataStr) {
    if (err) {
        // 如果读取失败返回错误信息
        console.log("读取失败"+ err.message);
    }
    else {
        // 如果读取成功返回数据
        console.log("读取成功" + dataStr);
    }
})

成功状态执行结果:

读取成功1111

失败返回结果:

读取失败ENOENT: no such file or directory, open 'D:\desk\FrontEnd\test\8-11\111.txt'

向指定文件写入内容

语法格式

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

参数解读:

  • path : 必选参数。字符串,标明文件的路径。
  • data : 必选参数,写入的内容。
  • `