全部学科
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 events 事件触发器模块
下一篇 → Node.js http HTTP 模块
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库