• 【Node.js】fs 文件操作模块


    • 写入文件内容语法:

      fs.writeFile('文件路径', '写入内容', err => {
        // 写入后的回调函数
      })
      
      • 1
      • 2
      • 3
    • 读取文件内容的语法:

      fs.readFile('文件路径', (err, data) => {
        // 读取后的回调函数
        // data 是文件内容的 Buffer 数据流
        //  console.log(data.toString()) // 可以把 Buffer 数据流转成字符串类型打印输出
      })
      
      • 1
      • 2
      • 3
      • 4
      • 5
    const fs = require('fs');
    // 创建目录
    fs.mkdir('./avatar',(err)=> {
      // console.log(err)
      if (err && err.code === 'EEXIST') {
        console.log("目录已经存在")
      }
    })
    
    // console.log(__dirname)  // 获取当前脚本文件所在的目录
    // 文件夹重命名
    fs.rename('./avatar','./avatar1',(err)=> {
        // console.log(err)
        if (err && err.code === 'ENOENT') {
          console.log("目录不存在")
        }
    })
    
    // 删除空文件夹
    fs.rmdir('./avatar1',(err)=> {
        // console.log(err)
        if (err && err.code === 'ENOENT') {
          console.log("目录不存在")
        }
    })
    
    // 创建文件并写(覆盖)内容到文件里
    fs.writeFile('./avatar/1.txt', 'hello world', (err) => {
      // console.log(err)
      if (err) {
        console.log(err.message)
      } else {
        console.log('文件创建成功')
      }
    })
    
    // 给文件追加内容
    fs.appendFile('./avatar/1.txt', 'hello world', (err) => {
      console.log(err)  // null
    })
    
    // 读取文件内容
    fs.readFile('./avatar/1.txt', 'utf-8', (err, data) => {
      console.log(err, data)
    })
    
    // 删除文件
    fs.unlink('./avatar/1.txt', (err) => {
      console.log(err)
    })
    
    // 读取文件/目录信息
    fs.readdir('./', (err, data) => {
      // console.log(data)
      data.forEach((value, index) => {
        fs.stat(`./${value}`, (err, stats) => {
          // console.log(value + ':' + stats.size)
          console.log(value + ' is ' + (stats.isDirectory() ? 'directory' : 'file'))
        })
      })
    })
    // avatar is directory
    // file.js is file
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65

    同步异步

    const fs = require('fs');
    // 同步读取文件
    try {
      const content = fs.readFileSync('./avatar/1.txt', 'utf-8')
      console.log(content)
    } catch (err) {
      console.log(err.message)
    }
    
    // 异步读取文件:方法一,存在回调地狱的问题
    fs.readFile('./avatar/1.txt', 'utf-8', (err, content) => {
      console.log(content)
      console.log(0)
    })
    console.log(1)
    // 1
    // 112233
    // 0
    
    // 异步读取文件:方法二
    const fs = require("fs").promises
    fs.readFile('./avatar/1.txt', 'utf-8').then(result => {
      console.log(result)
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    由于Node环境执行的JavaScript代码是服务器端代码,所以,绝大部分需要在服务器运行期反复执行业务逻辑的代码,必须使用异步代码。否则,同步代码在执行时期,服务器将停止响应,因为JavaScript只有一个执行线程。

    服务器启动时如果需要读取配置文件,或者结束时需要写入到状态文件时,可以使用同步代码,因为这些代码只在启动和结束时执行一次,不影响服务器正常运行时的异步执行。

  • 相关阅读:
    深度干货 | 38道Java基础面试题 (1.2W字详细解析)
    iOS关于高德地图定位和热点搜索使用小结
    深度神经网络基础知识
    Mysql学习笔记
    【C++题解】1715. 输出满足条件的整数5
    贪心算法-Huffman算法
    Qakbot新型感染链:使用Windows7系统侧加载感染设备
    OpenCV之VideoCapture
    【实战】CEF框架集成MFC DLL的一些坑
    基于导频的信道估计实现
  • 原文地址:https://blog.csdn.net/XiugongHao/article/details/133754336