node.js 的 fs 模块的介绍

前言

fs 模块是 Node.js 内置的一个模块,它用于文件系统操作,包括文件读写、目录创建等。fs 模块提供了同步和异步两种方式的方法,异步方法通常以 Async 结尾,比如 fs.readFileAsync(),它们接受一个回调函数作为参数,用于处理异步操作的结果。同步方法通常没有 Async 后缀,比如 fs.readFileSync(),它们会阻塞程序的执行,直到操作完成,然后返回结果。一般来说,异步方法的性能更好,但是同步方法的逻辑更简单。

如何使用 fs 模块?

要使用 fs 模块,首先需要引入它,可以使用 require() 函数,然后,就可以调用 fs 模块的方法,比如读取一个文件的内容,可以使用 fs.readFile() 方法,如下:

javascript 复制代码
const fs = require('fs');

fs.readFile('test.txt', 'utf8', (err, data) => {
  if (err) {
    console.error(err);
  } else {
    console.log(data);
  }
});

这个例子中,我们使用了 fs.readFile() 的异步方法,它接受三个参数:

  • 第一个是文件名,
  • 第二个是编码格式,
  • 第三个是回调函数。

回调函数的第一个参数是错误对象,如果操作成功,它会是 null,否则会包含错误信息。

回调函数的第二个参数是文件的内容,如果操作成功,它会是一个字符串,否则会是 undefined。

如果我们想使用 fs.readFileSync() 的同步方法,我们可以这样写:

javascript 复制代码
  const data = fs.readFileSync('test.txt', 'utf8');

fs 模块有哪些常用的方法?

fs 模块有很多方法,我们无法在这里一一介绍,但是我们可以列举一些常用的方法,如下:

  • fs.writeFile() 和 fs.writeFileSync():用于写入文件,如果文件不存在,会创建一个新文件,如果文件存在,会覆盖原有内容。
  • fs.appendFile() 和 fs.appendFileSync():用于追加文件,如果文件不存在,会创建一个新文件,如果文件存在,会在文件末尾追加内容。
  • fs.unlink() 和 fs.unlinkSync():用于删除文件。
  • fs.rename() 和 fs.renameSync():用于重命名文件或目录。
  • fs.stat() 和 fs.statSync():用于获取文件或目录的状态信息,比如大小、修改时间等。
  • fs.readdir() 和 fs.readdirSync():用于读取目录的内容,返回一个包含文件名和子目录名的数组。
  • fs.mkdir() 和 fs.mkdirSync():用于创建目录。
  • fs.rmdir() 和 fs.rmdirSync():用于删除目录。
  • fs.copyFile() 和 fs.copyFileSync():用于复制文件。
  • fs.watch() 和 fs.watchFile():用于监视文件或目录的变化,当发生变化时,会触发一个事件。

总结

fs 模块是 Node.js 的一个重要的模块,它可以让我们在 Node.js 中操作文件系统,实现一些常见的功能,比如读写文件、创建删除目录等。fs 模块提供了同步和异步两种方式的方法,我们可以根据不同的场景选择合适的方法。

复制代码
相关推荐
SuperEugene5 分钟前
Vue Router 实战规范:path/name/meta 配置 + 动态 / 嵌套路由,统一团队标准|状态管理与路由规范篇
开发语言·前端·javascript·vue.js·前端框架
小彭努力中23 分钟前
194.Vue3 + OpenLayers 实战:动态位置 + 高度 + 角度,模拟卫星地面覆盖范围
前端·css·vue.js·openlayers·animate
颜正义24 分钟前
作为前端你还不会 Playwright 进行单元测试吗?
前端·测试
孟陬25 分钟前
国外技术周刊 #3:“最差程序员”带动高效团队、不写代码的创业导师如何毁掉创新…
前端·后端·设计模式
张一凡9326 分钟前
easy-model -- "小而美"的React状态管理方案
前端·javascript·react.js
前端Hardy27 分钟前
纯 HTML/CSS/JS 实现的高颜值登录页,还会眨眼睛!少女心爆棚!
前端·javascript·vue.js
猪八宅百炼成仙1 小时前
解决Vue项目中scrollIntoView导致的布局异常问题
前端
miss1 小时前
Vue2 → Vue3 深度对比:8 大核心优化,性能提升 2 倍
前端·vue.js·架构
绝世唐门三哥2 小时前
React---数组浅拷贝之slice的使用
前端·reactjs
傅里叶2 小时前
Flutter开发的app,实现Google 登录
前端·flutter