node.js中fs文件系统模块的理解与应用

前言:很多小伙伴学习node.js时很苦恼吧,一篇带你轻松理解fs文件系统模块。

一、概念理解

定义:fs模块是Node,js官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。
两个重要方法:
  • fs.readFile()方法,用来读取指定文件中的内容
  • fs.writeFile()方法,用来向指定的文件中写入内容
    const fs=require('fs')
    

二、读取指定文件中的内容

 

2.1、实例1:读取文件

// 1.导入fs模块,来操作文件,用fs接受fs模块
const fs =require('fs');
// 读取成功后
//2.调用fs.readFile()方法读取文件
//  参数1:读取文件的存放路径
//  参数2:读取文件是采用编码格式,一般默认指定utf-8
//  参数3:回调函数,拿到读取失败和成功的结果 err(失败的结果) dataStr(成功的结果)
fs.readFile('./files/11.txt','utf-8',function(err,dataStr){
    // 2.1打印失败的结果
    // 如果读取成功,则err的值为null
    // 如果读取失败,这err的值为错误对象,dataStr的值为undefined
    console.log(err);
    console.log('-----');
    // 2.2打印成功的结果
    console.log(dataStr);
})
运行结果:

2.2、实例2:判断文件是否读取成功

通过err的值来判断
const fs =require('fs');
fs.readFile('./files/11.txt','utf-8',function(err,dataStr){
    if(err){
        return console.log('读取文件失败'+err.message)
    }
    console.log('读取文件成功'+ dataStr);
})
运行结果:

三、写入文件

3.1实例:

// 1.导入fs文件系统模块
const fs = require('fs')
//2.调用fs.writeFile()方法,写入文件的内容
//  参数1:表示文件的存放路径
//  参数2:表示要写入的内容
//  参数3:回调函数
fs.writeFile('./files/11.txt','hello node.js',function(err){
    //2.1如果文件写入成功,则err的值等于null
    // 2.2如果文件写入失败,则err的值等于一个错误对象
    console.log(err);
})
运行结果:

3.2、实例4:判断写入是否成功

// 1.导入fs文件系统模块
const fs = require('fs')
//2.调用fs.writeFile()方法,写入文件的内容
//  参数1:表示文件的存放路径
//  参数2:表示要写入的内容
//  参数3:回调函数
fs.writeFile('./files/11.txt','hello node.js',function(err){
    //2.1如果文件写入成功,则err的值等于null
    // 2.2如果文件写入失败,则err的值等于一个错误对象
    // console.log(err);


    //判断文件是否写入成功
    if (err) {
      return console.log("读取文件失败" + err.message);
    }
    console.log("读取文件成功");
})
运行结果:

 四、fs模块-路由动态拼接的问题

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

4.1、解决办法1:提供完整路径

 在使用fs模块操作文件时,直接提供完整的路径,不要提供/或..开头的相对路径,从而防止路径动态拼接的问题。

4.2、解决办法2:使用__dirname

__dirname表示当前文件所处的目录再字符拼接

4.3、代码演示

//原始方法
const fs = require("fs");
fs.readFile("./files/11.txt", "utf-8", function (err, dataStr) {
  if (err) {
    return console.log("读取文件失败" + err.message);
  }
  console.log("读取文件成功" + dataStr);
});
//改进方法,提供完整的文件存放路径
// 注意使用转义字符\否则无法读取路径
const fs = require("fs");
fs.readFile("E:前端\\nodejsketangwangke\\fs文件系统模块\\files\\11.txt",
  "utf-8",
  function (err, dataStr) {
    if (err) {
      return console.log("读取文件失败" + err.message);
    }
    console.log("读取文件成功" + dataStr);
  }
);
//改进方法2:__dirname表示当前文件所处的目录,再字符拼接
const fs = require("fs");
fs.readFile(__dirname+"./files/11.txt","utf-8",function (err, dataStr) {
    if (err) {
      return console.log("读取文件失败" + err.message);
    }
    console.log("读取文件成功" + dataStr);
  }
);

五、实战练习:考试成绩整理

5.1、要求:

5.2、步骤:

 5.3、代码实现

// 1.导入fs模块,来操作文件,用fs接受fs模块
const fs = require("fs");
//2.调用fs.readFile()方法读取文件
fs.readFile("./files/chengj.txt", "utf-8", function (err, dataStr) {
  // 3.判断是否读取成功
  if (err) {
    return console.log("读取失败" + err.message);
  }
//   else {
//     // return console.log("读取成功" + dataStr);
//   }
  //   4.1先把成绩是数据按照空格进行分割
  const arrOld = dataStr.split(" ");
  console.log(arrOld);
  //   4.2循环分割后的数组,对每一项数据进行字符串的替换操作
  const arrNew = [];
  // 针对每一项数据,将等号换成冒号
  arrOld.forEach((item) => {
    arrNew.push(item.replace("=", ":"));
  });
//   4.3把新数组中的每一项进行合并,得到一个新的字符串
  const newStr=arrNew.join('\r\n')
  console.log(newStr);
//   5.调用fs.writeFile()方法,把处理完毕的成绩,写入到新文件中
fs.writeFile('./files/chengji-ok.txt',newStr,function(err){
    if(err){
        return console.log('写入文件失败!'+ err.message);
    }
    console.log('成绩写入成功!');
})
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值