• Nodejs fs模块常用方法 -- File System


    视频链接:黑马程序员Node.js全套入门教程

    fs文件系统模块

    官方文档:File system Documentation (nodejs.org)

    1 什么是fs文件系统模块

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

    例如:

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

    在js文件中,可以使用如下方式导入

    const fs = require('fs')
    
    • 1

    2 读取指定文件中的内容

    语法格式

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

    参数解释

    • path:文件路径(必选)
    • options:配置选项,若是字符串则指定编码格式
      • encoding:编码格式
      • flag:打开方式
    • callback:回调函数(必选)
      • err:错误信息
      • data:读取的数据,如果未指定编码格式则返回一个 Buffer

    示例代码

    const fs = require('fs')
    
    fs.readFile('./test.txt', 'utf8', (err, data) => {
        if (err) {
            // 文件读取失败
            return console.log(err)
        }
        console.log(data)
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    如果读取成功,则err的值为null,data的值为文件文本内容

    如果读取失败,则err的值为错误对象,data的值为undefined

    3 向指定文件中写入内容

    写入文件的时候只能创建文件,不能创建目录

    重复调用该方法时候,会用新内容覆盖旧内容

    语法格式

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

    参数解释

    • file:文件路径,必选
    • data:写入内容,必选
    • options:配置选项,包含 encoding, mode, flag;若是字符串则指定编码格式
    • callback:回调函数,必选

    示例代码

    const fs = require('fs')
    
    fs.writeFile('./files/txt', "文件内容。。。", 'utf8', err => {
        if (err) {
            // 写入失败
            console.log(err)
        } else {
            console.log("success")
        }
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    如果文件写入成功,则err的值为null

    如果文件写入失败,则err的值为错误对象

    4 路径动态拼接的问题

    在使用fs模块操作文件的时候,如果提供的操作路径是以./../开头的相对路径,很容易出现路径动态拼接错误的问题

    原因:代码在运行的时候,会以执行node命令时所处的目录,动态拼接处被操作问价的完整目录

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

    __direname表示当前文件所处的目录(注意是双下划线)

    fs.readFile(__dirname + '/files/test.txt', 'utf8', (err, data) => {
        if (err) {
            // 文件读取失败
            return console.log(err)
        }
        console.log(data)
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    5 其他操作

    验证路径是否存在:

    • fs.exists(path, callback)
    • fs.existsSync(path)

    获取文件信息:

    • fs.stat(path, callback)
    • fs.stat(path)

    删除文件:

    • fs.unlink(path, callback)
    • fs.unlinkSync(path)

    列出文件:

    • fs.readdir(path[,options], callback)
    • fs.readdirSync(path[, options])

    截断文件:

    • fs.truncate(path, len, callback)
    • fs.truncateSync(path, len)

    建立目录:

    • fs.mkdir(path[, mode], callback)
    • fs.mkdirSync(path[, mode])

    删除目录

    • fs.rmdir(path, callback)
    • fs.rmdirSync(path)

    重命名文件和目录:

    • fs.rename(oldPath, newPath, callback)
    • fs.renameSync(oldPath, newPath)

    监视文件更改:

    • fs.watchFile(filename[, options], listener)
  • 相关阅读:
    网络编程内容
    聊聊秒杀系统的设计(一)
    Tomcat 接收请求并传递给工作线程池流程
    VUE+Element添加高德地图的功能
    架构师技能图谱
    baichuan2(百川2)本地部署的实战方案
    物联网常见协议篇
    HTML、ASP.NET、XML、Javascript、DIV+CSS、JQuery、AJax的起源与简介
    2012年下半年 系统架构设计师 下午试卷 II
    再谈Java泛型
  • 原文地址:https://blog.csdn.net/qq_46311811/article/details/127986086