全部学科
Python全栈
python
NodeJS全栈
nodejs
📅 2026-05-15 10 分钟 ✍️ juanwangdev

Node.js fs 文件系统模块

fs 模块提供文件系统操作能力,包括文件读写、目录管理、文件信息查询等。

引入模块

JavaScript
const fs = require('fs');
// 或使用 Promise 版本
const fsPromises = require('fs').promises;

同步与异步 API

API 类型特点示例
同步阻塞执行,返回结果fs.readFileSync()
异步回调非阻塞,回调处理fs.readFile(callback)
异步 Promise非阻塞,Promisefs.promises.readFile()

文件读取

JavaScript
// 同步读取
const data = fs.readFileSync('file.txt', 'utf8');
console.log(data);

// 异步回调读取
fs.readFile('file.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

// Promise 版本
async function readFile() {
  const data = await fsPromises.readFile('file.txt', 'utf8');
  console.log(data);
}

文件写入

JavaScript
// 同步写入
fs.writeFileSync('output.txt', 'Hello World');

// 异步回调写入
fs.writeFile('output.txt', 'Hello World', (err) => {
  if (err) throw err;
  console.log('写入完成');
});

// Promise 版本
await fsPromises.writeFile('output.txt', 'Hello World');

// 追加写入
fs.appendFileSync('log.txt', '新日志\n');

文件信息

JavaScript
// 获取文件状态
fs.stat('file.txt', (err, stats) => {
  if (err) throw err;
  console.log('是否文件:', stats.isFile());
  console.log('是否目录:', stats.isDirectory());
  console.log('文件大小:', stats.size);
  console.log('修改时间:', stats.mtime);
});

文件操作

JavaScript
// 删除文件
fs.unlinkSync('file.txt');
// 或
await fsPromises.unlink('file.txt');

// 重命名文件
fs.renameSync('old.txt', 'new.txt');

// 复制文件
fs.copyFileSync('source.txt', 'dest.txt');

目录操作

JavaScript
// 创建目录
fs.mkdirSync('newdir');
// 递归创建
fs.mkdirSync('parent/child', { recursive: true });

// 读取目录
const files = fs.readdirSync('./');
console.log(files);

// 删除目录
fs.rmdirSync('emptydir');
// 删除非空目录(需递归)
fs.rmSync('nonempty', { recursive: true });

文件监听

JavaScript
// 监听文件变化
fs.watch('file.txt', (eventType, filename) => {
  console.log(`事件: ${eventType}, 文件: ${filename}`);
});

// 监听目录
fs.watch('./', (eventType, filename) => {
  console.log('文件变化:', filename);
});

判断文件是否存在

JavaScript
// 推荐:使用 stat 或 access
fs.access('file.txt', fs.constants.F_OK, (err) => {
  console.log(err ? '不存在' : '存在');
});

// Promise 版本
try {
  await fsPromises.access('file.txt');
  console.log('文件存在');
} catch {
  console.log('文件不存在');
}

fs.exists() 已弃用,不推荐使用。

要点总结

  • fs 提供同步、异步回调、Promise 三种 API
  • readFile/writeFile 用于文件读写,默认返回 Buffer
  • stat 获取文件信息,readdir 列出目录内容
  • mkdir 可递归创建目录,rm 可递归删除
  • 使用 fs.promises 可配合 async/await 简化代码
想在手机上练习这篇文章的配套题目?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一篇 Node.js path 路径模块
下一篇 → Node.js http HTTP 模块
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码