Node.js中的fs模块

Node.js内置的fs模块就是文件系统模块,负责读写文件。

  • 和所有其它JavaScript模块不同的是,fs模块同时提供了异步和同步的方法。

异步读取文件 => readFile()

  • 读取一个文本文件

      'use strict'
      let fs = require('fs')
      fs.readFile('sample.txt', 'utf-8', function(err, data) {
          if (err) {
              console.log(err)
          } else {
              console.log(data)
          }
      })
    
  • 读取一个二进制文件

      'use strict'
      let fs = require('fs')
      fs.readFile('sample.jpg', function(err, data) {
          if (err) {
              console.log(err)
          } else {
              let text = data.toString('utf-8')
              console.log(text)
              console.log(data.length + 'bytes')
          }
      })
    

当读取二进制文件时,不传入文件编码时,回调函数的data参数将返回一个Buffer对象。在Node.js中,Buffer对象就是一个包含零个或任意个字节的数组(注意和Array不同)。

Buffer对象可以和String作转换

      // Buffer -> String
      var text = data.toString('utf-8');
      console.log(text);
      // String -> Buffer
      var buf = Buffer.from(text, 'utf-8');
      console.log(buf)

同步读取文件 => readFileSync()

  • 同步读取文件发生错误,则需要用try...catch捕获该错误:

      'use strcit'
      let fs = require('fs')
      try {
          let data = fs.readFileSync('sample.txt', 'utf-8')
          console.log(data)
      } catch (err) {
          console.log(err)
      }
    

写文件 => writeFile()

    'use strict'
    let fs = require('fs')
    let data = 'Node.js1.0'
    fs.writeFile('output.txt', data, function(err) {
        if (err) {
            console.log(err)
        } else {
            console.log('执行完成')
        }
    })

同步写文件 =>writeFileSync()

    'use strict'
    let fs = require('fs')
    let data = 'Syncwirte Node.js'
    try {
        fs.writeFileSync('outputsync.txt', data)
        console.log('执行完成')
    } catch (err) {
        console.log(err)
    }
  • 执行写文件的方法时,如果指定的文件不存在的话,便会自动创建这个文件并写入指定数据

stat

如果我们要获取文件大小,创建时间等信息,可以使用fs.stat(),它返回一个Stat对象,能告诉我们文件或目录的详细信息:

    'use strict'

    const fs = require('fs')

    fs.stat('output.txt', function(err, stat) {
        if (err) {
            console.log(err)
        } else {
            // 是否是文件:
            console.log('isFile: ' + stat.isFile());
            // 是否是目录:
            console.log('isDirectory: ' + stat.isDirectory());
            if (stat.isFile()) {
                // 文件大小:
                console.log('size: ' + stat.size);
                // 创建时间, Date对象:
                console.log('birth time: ' + stat.birthtime);
                // 修改时间, Date对象:
                console.log('modified time: ' + stat.mtime);
            }
        }
    })

这里卿洋
愿喜❤️

你可能感兴趣的:(Node.js中的fs模块)