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

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


同步异步

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)
})

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

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

你可能感兴趣的:(Node.js,node.js)