fs
(File System)模块是 Node.js 的核心模块之一,用于处理文件系统的操作,包括文件的读取、写入、删除、重命名等。它提供了同步和异步两种操作方式,适用于不同的场景。
1. 前置知识
1.1 文件系统
文件系统是操作系统用于管理文件和目录的一种机制。Node.js 通过 fs
模块提供了对文件系统的访问能力。
1.2 同步与异步
- 同步操作:阻塞代码执行,直到操作完成。
- 异步操作:非阻塞,通过回调函数、Promise 或
async/await
处理结果。
1.3 文件路径
- 相对路径:相对于当前工作目录的路径。
- 绝对路径:从根目录开始的完整路径。
- 路径处理:可以使用
path
模块处理路径相关问题。
2. 概念与意义
2.1 概念
fs
模块提供了对文件系统的操作接口,包括:
- 文件的读取和写入。
- 目录的创建和删除。
- 文件属性的获取和修改。
- 文件监视(watch)。
2.2 意义
- 文件操作:读写文件是许多应用的基础功能,如配置文件读取、日志记录等。
- 异步支持:Node.js 的非阻塞 I/O 模型使得文件操作不会阻塞主线程,适合高并发场景。
- 跨平台:
fs
模块在不同操作系统上表现一致,提供了跨平台的文件操作能力。
3. 基本操作与用法
3.1 引入 fs
模块
const fs = require('fs');
3.2 文件读取
异步读取
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error('Failed to read file:', err);
} else {
console.log('File content:', data);
}
});
同步读取
try {
const data = fs.readFileSync('example.txt', 'utf8');
console.log('File content:', data);
} catch (err) {
console.error('Failed to read file:', err);
}
3.3 文件写入
异步写入
fs.writeFile('example.txt', 'Hello, world!', 'utf8', (err) => {
if (err) {
console.error('Failed to write file:', err