Node.js文件系统(fs)
Node.js 的 fs
(File System)模块提供了与文件系统交互的 API,允许你在 Node.js 应用程序中读取、写入、监视文件以及操作目录。这些功能对于创建需要处理文件数据的服务器端应用程序至关重要。本文将介绍 fs
模块的一些基本和高级用法。
1. 引入 fs
模块
首先,你需要在你的 Node.js 文件中引入 fs
模块:
const fs = require('fs');
2. 异步与同步方法
fs
模块提供了两种风格的方法:异步(asynchronous)和同步(synchronous)。异步方法通常带有 callback
参数,用于在操作完成后执行。同步方法则直接返回结果,但会阻塞代码执行,直到操作完成。
- 异步方法:例如
fs.readFile()
、fs.writeFile()
- 同步方法:例如
fs.readFileSync()
、fs.writeFileSync()
通常建议使用异步方法,以避免阻塞事件循环,从而影响应用程序的性能。
3. 读取文件
- 异步读取文件:
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
- 同步读取文件:
try {
const data = fs.readFileSync('example.txt', 'utf8');
console.log(data);
} catch (err) {
console.error(err);
}
4. 写入文件
- 异步写入文件:
fs.writeFile('example.txt', 'Hello, World!', 'utf8', (err) => {
if (err) {
console.error(err);
return;
}
console.log('File written successfully');
});
- 同步写入文件:
try {
fs.writeFileSync('example.txt', 'Hello, World!', 'utf8');
console.log('File written successfully');
} catch (err) {
console.error(err);
}
5. 追加文件
- 异步追加文件:
fs.appendFile('example.txt', '\nAppending some text.', 'utf8', (err) => {
if (err) {
console.error(err);
return;
}
console.log('Text appended successfully');
});
- 同步追加文件:
try {
fs.appendFileSync('example.txt', '\nAppending some text.', 'utf8');
console.log('Text appended successfully');
} catch (err) {
console.error(err);
}
6. 监视文件
fs.watch()
方法允许你监视文件或目录的变化,并在变化发生时执行回调函数。
fs.watch('example.txt', (eventType, filename) => {
if (filename) {
console.log(`File ${filename} changed with event type: ${eventType}`);
}
});
7. 操作目录
- 读取目录内容:
fs.readdir('directory_name', (err, files) => {
if (err) {
console.error(err);
return;
}
console.log(files);
});
- 创建目录:
fs.mkdir('new_directory', { recursive: true }, (err) => {
if (err) {
console.error(err);
return;
}
console.log('Directory created successfully');
});
- 删除目录:
fs.rmdir('directory_name', { recursive: true }, (err) => {
if (err) {
console.error(err);
return;
}
console.log('Directory removed successfully');
});
8. 路径操作
虽然 fs
模块本身不直接提供路径操作功能,但 Node.js 的 path
模块可以与 fs
模块一起使用来处理文件路径。
const path = require('path');
const fullPath = path.join(__dirname, 'new_directory', 'example.txt');
console.log(fullPath);
总结
Node.js 的 fs
模块提供了一套丰富的 API,用于与文件系统交互。通过本文,你学习了如何读取、写入、监视文件以及操作目录的基本方法。这些技能对于开发需要处理文件数据的 Node.js 应用程序至关重要。记住,在可能的情况下使用异步方法,以避免阻塞事件循环,从而影响应用程序的性能。
本文地址:https://www.tides.cn/p_node-fs