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

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

  • fs.readFile(): 用来读取只当文件中的内容
  • fs.writeFile(): 用来向指定的文件中写入内容

在代码中使用fs模块操作文件, 需要先导入改模块。const fs = require(‘fs’)

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

使用fs.readFile(),可以读取指定文件中的内容
fs.readFile()的语法格式:fs.readFile(path[,options], callback)
参数解读:

  • 参数一: 必选参数, 字符串, 表示文件路径
  • 参数二:可选参数, 表示以什么编码格式来读取文件
  • 参数三: 必选参数, 文件读取完成后, 通过回调函数返回读取的结果
    1. const fs = require('fs')
    2. fs.readFile('../data/test.txt','utf-8', function(err, dataStr){
    3. console.log(err)
    4. console.log(dataStr)
    5. //我是测试数据
    6. /**
    7. * 如果读取成功,则err的值为null,
    8. * 如果读取失败, err的值为错误对象, dataStr的值为undefined
    9. */
    10. })
    判断读取是否成功:
    1. const fs = require('fs') fs.readFile('../data/test.txt1','utf-8', function(err, dataStr){
    2. if(err){
    3. return console.log('读取失败', err.message)
    4. }else{
    5. console.log('读取成功',dataStr)
    6. }
    7. })

    3. 给指定文件中写入内容

    使用fs.writeFile()方法, 可以向指定文件中写入内容,
    语法格式:fs.writeFile(file, data[,options], callback)
    参数解读:
    参数一: 必选参数,需要指定一个文件路径的字符串, 表示文件存放的路径
    参数二: 必选参数, 表示要写入的内容
    参数三:可选参数,表示以什么格式写入文件内容,默认值是utf8
    参数四: 必选参数, 文件写入完成后的回调函数。
    1. const fs = require('fs') fs.writeFile('../data/testhah2.txt','haha', function(err){
    2. console.log(err)
    3. /**
    4. * 如果写入成功,则err的值等于null
    5. * 如果写入失败, 则err的值等于错误对象
    6. * 如果只是修改文件的名字, 系统找不到改文件的名字, 就会默认生成一个文件名, 然后写入值
    7. */
    8. })
    如何判断是否写入成功
    1. const fs = require('fs') fs.writeFile('f:../data/testhah2.txt','haha', function(err){
    2. if(err){
    3. return console.log('写入失败', err.message)
    4. }else{
    5. console.log('写入成功')
    6. }
    7. })

    4. __dirname

    __dirname表示当前文件所处的目录
    使用fs模块操作文件时, 如果提供的操作路径是以./或者../开头的相对路径时, 很容易出现错误。
    此时可以使用__dirname解决路径问题。
    1. const fs = require('fs') fs.writeFile(__dirname+'/data/testhah36.txt','haha', function(err){
    2. if(err){
    3. return console.log('写入失败', err.message)
    4. }else{
    5. console.log('写入成功')
    6. }
    7. })

    5. 综合练习

    把score.txt文件夹中的小红_99 小李_64 小张_72 Iric_89内如写入到score_ok.txt中, 并对一个人进行换行。
    1. const fs = require('fs')
    2. let content = '' fs.readFile('../data/score.txt','utf8', (err, req) =>{
    3. if(err){
    4. return console.log('读取失败', err.message)
    5. }else{
    6. console.log(req)
    7. content = req.split(' ');
    8. const arr = content.map(item => {
    9. item = item.replace('_', ':')
    10. return item;
    11. })
    12. const newStr = arr.join('\r\n')
    13. fs.writeFile('../data/score_ok.txt',newStr, err => {
    14. if(err){
    15. console.log('写入失败', err.message)
    16. }else{
    17. console.log('写入成功')
    18. }
    19. })
    20. }
    21. })