文件读写

fs 模块(文件系统模块)提供了一个用于读写文件的API。它是 Node.js 核心模块之一,允许你以异步或同步的方式对文件进行操作。

读取

异步读取文件,当文件读取完成时,调用回调函数。

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

同步读取文件,返回文件内容

fs.readFileSync(path[, options])

示例代码

const fs = require('fs');

fs.readFile('fs.txt', 'utf8', (err, data) => {
   // 若读取失败,则 data 为 undefined
   if (err) throw err;
   // 若读取成功,则 err 为 null
   console.log(data);
})
console.log('这是个异步读取文件的操作操作')

console.log(fs.readFileSync('fs.txt', 'utf8'));
// 异步读取使用回调函数处理结果数据, 同步读取,函数本身返回结果数据

 

写入

异步写入文件,当文件写入完成时,调用回调函数。

fs.writeFile(file, data, [encoding], callback)

同步写入文件

fs.writeFileSync(file, data, [encoding])

示例代码

{
   const writeData = 'fs 模块(文件系统模块)提供了一个用于读写文件的API。它是 Node.js 核心模块之一,允许你以异步或同步的方式对文件进行操作。'
   fs.writeFile('fs.txt', writeData, 'utf-8', (err) => {
       if (err) {
           // 若读取成功,则 err 为 null
           console.error(err);
      } else {
           console.log('写入成功啦!')
      }
  })

   try{
       console.log(fs.writeFileSync('fs.txt', fs.readFileSync('fs.txt', 'utf8') + '同步写入', 'utf8'));
  }catch (e){
       console.error(e);
  }
}

使用 fs.writeFileSync 方法同步写入文件时,如果操作成功,该方法不会返回任何值,如果写入过程中发生错误,它会抛出一个异常,因此我们通过try...catch 语句来处理 fs.writeFileSync 可能抛出的异常

追加文件

(fs.appendFilefs.appendFileSync)

  • fs.appendFile(file, data, [encoding], callback):异步追加数据到文件末尾。

  • fs.appendFileSync(file, data, [encoding]):同步追加数据到文件末尾。

删除文件

(fs.unlinkfs.unlinkSync)

  • fs.unlink(path, callback):异步删除文件。

  • fs.unlinkSync(path):同步删除文件。

重命名文件

(fs.renamefs.renameSync)

  • fs.rename(oldPath, newPath, callback):异步重命名文件。

  • fs.renameSync(oldPath, newPath):同步重命名文件。

检查文件状态

(fs.statfs.statSync)

  • fs.stat(path, callback):异步获取文件状态(如大小、创建时间等)。

  • fs.statSync(path):同步获取文件状态。

创建和读取目录

(fs.mkdir, fs.readdir, fs.rmdir)

  • fs.mkdir(path[, options], callback):异步创建目录。

  • fs.readdir(path, callback):异步读取目录内容。

  • fs.rmdir(path, callback):异步删除空目录。

监控文件变化

(fs.watch)

  • fs.watch(filename[, options], listener):监控文件的变化,当文件被修改时触发监听器。

路径动态拼接问题

在使用 fs 模块操作文件时,如果提供的操作路径是以 ./../ 开头的相对路径时,很容易出现路径动态拼接错误的问题。 原因:代码在运行的时候,会以执行 node 命令时所处的目录为基准,动态拼接出被操作文件的完整路径。 解决方法:使用绝对路径,使用path模块来拼接路径

posted on 2024-08-20 09:38  XiSoil  阅读(10)  评论(0编辑  收藏  举报