个人 黑马程序员Node.js学习笔记(二)

这篇博客详细介绍了Node.js中的fs模块,包括fs.readFile()和fs.writeFile()的使用,以及文件读写成功的判断方法。还通过一个考试成绩整理的实战例子展示了如何操作文件,并讨论了路径动态拼接的问题和解决方案。
摘要由CSDN通过智能技术生成

个人 黑马程序员Node.js学习笔记(二)

二.fs文件系统模块

01.什么是fs文件系统模块

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

例如:

fs.readFile() 方法,用来读取指定文件中的内容。

fs.writeFile() 方法,用来向指定的文件中写入内容。

如果要在JavaScript代码中,使用fs模块来操作文件,则需要使用

const fs = require('fs')

先导入fs模块。

02.读取指定文件中的内容

fs.readFile()的语法格式

使用 fs.readFile() 方法,可以读取指定文件中的内容,语法格式如下:

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

参数解读:

  1. 参数1:必选参数,指定一个文件路径的字符串,表示文件的存放路径。
  2. 参数2:可选参数,表示以什么编码格式来读取文件。
  3. 参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果。
fs.readFile()的示例代码
const fs=require('fs');//导入fs模块,来操作文件

fs.readFile('./files/1.txt','utf8',function(err,dataStr){
console.log(err);
//如果读取成功,则err的值为null 反之则为错误对象。

console.log('-----');

console.log(dataStr);
//如果读取成功 dataStr的值为读取的文件内容 反之则为undefined
})
判断文件是否读取成功

可以通过判断err对象是否为null,从而知晓文件读取的结果:

const fs=require('fs');

fs.readFile('./files/1.txt','utf8',function(err,dataStr){
if(err){
    return console.log('读取文件失败!'+err.message);
}
console.log('读取文件成功!'+dataStr);
})

03.向指定的文件中写入内容

fs.writeFile的语法格式

使用 fs.writeFile() 方法,可以读取指定文件中的内容,语法格式如下:

fs.writeFile(file,data[, options], callback)

参数解读:

  1. 参数1:必选参数,指定一个文件路径的字符串,表示文件的存放路径。
  2. 参数2:必选参数,表示要写入的内容。
  3. 参数3:可选参数,表示以什么格式写入文件内容,默认值是utf-8。
  4. 参数4:必选参数,文件写入完成后的回调函数。
fs.writeFile()的示例代码
const fs=require('fs');//导入fs模块,来操作文件

fs.writeFile('./files/2.txt','Misaka10045',function(err){
    console.log(err);//如果文件写入成功,则err的值为null 反之则为一个错误对象
})
判断文件是否写入成功

可以通过判断err对象是否为null,从而知晓文件读取的结果:

const fs=require('fs');//导入fs模块,来操作文件

fs.writeFile('./files/2.txt','Misaka10045',function(err){
if(err){
    return console.log('文件写入失败!'+err.message);
}
console.log('文件写入成功!');
})

04.练习-考试成绩整理

使用fs文件系统模块,将素材成绩.txt文件中的考试数据。整理到成绩-ok.txt文件中,

成绩.txt文件中的数据如下:

小红=99 小白=100 小黄=70 小黑=66 小绿=88

希望得到的成绩-ok.txt文件中的数据如下:

小红:99

小白:100

小黄:70

小黑:66

小绿:88

核心实现步骤
  1. 导入需要的fs文件系统模块
  2. 使用fs.readFile()方法,读取成绩.txt文件
  3. 判断文件是否读取失败
  4. 文件读取成功后,处理成绩数据
  5. 将处理完成的成绩数据,调用**fs.writeFile()**方法,写入到新文件 成绩-ok.txt
实现代码
const fs =require('fs')//导入fs模块

fs.readFile('./素材/成绩.txt','utf8',function(err,dataStr){
    if(err){//判断文件是否读取成功
        return console.log('读取文件失败!'+err.message)
    }
    // console.log('读取文件成功!'+dataStr);

    const arrOld = dataStr.split(' ')//先把成绩的数据,按照空格进行分割

    const arrNew=[];
    arrOld.forEach(item => {
        arrNew.push(item.replace('=', ':'))
    })//把分割后的字符 把 =  替换成 :

    const newStr=arrNew.join('\r\n');//把数组合并成字符串

 fs.writeFile('./files/成绩-ok.txt',newStr,function(err){
    if(err){//判断文件是否写入成功
        return console.log('写入文件失败!'+err.message);
    }
    console.log('成绩写入成功!');
 })
})

05.fs模块-路径动态拼接

在使用fs模块操作文件时,如果提供的操作路径是相对路径,就可能会出现路径动态拼接错误的问题。

原因:

代码在运行的时候,会以执行node命令所处的目录,动态拼接出被操作文件的完整路径。

解决方案:

在使用fs模块操作文件时,直接提供完整的路径。

缺点是移植性非常差,不利于维护。

完美解决方案:

__dirname表示当前文件所处的目录。

可通过 __dirname 来表示操作路径 可完美解决动态拼接问题。

示例:

fs.readFile(__dirname+'/files/1.txt','utf-8',function(err,dataStr){
if(err){
return console.log('读取文件失败!'+err.message)
}
console.log('读取文件成功!'+dataStr)
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值