在Node.js开发中,文件操作是一个非常常见的任务,Node.js通过fs(文件系统)核心模块为我们提供了多种方法来处理文件和目录的创建、读取、更新、删除等操作。fs模块提供了同步和异步两种API,支持大量文件操作功能,实际开发过程中一般异步使用居多,因此本文介绍的基本上都是异步操作。
一、引入fs模块
const fs = require('fs');
二、文件的读取
fs.readFile方法用于异步读取文件的内容。该方法接受三个参数:
- 文件路径
- 编码格式(可选,默认为
null,表示返回Buffer) - 回调函数,文件读取完成后调用。
const fs = require('fs');
fs.readFile('./file.txt', 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
三、文件的写入
fs.writeFile方法用于异步写入文件内容。该方法接受三个参数:
- 文件路径
- 编码格式(可选,默认为
null,表示返回Buffer) - 回调函数,文件写入完成后调用。
const fs = require('fs');
const content = '您好!, this is some text.';
fs.writeFile('./output.txt', content, 'utf8', (err) => {
if (err) {
console.error(err);
return;
}
console.log('写入成功.');
});
四、文件的追加
fs.appendFile方法用于异步读取文件的内容。该方法接受四个参数:
- 文件路径
- 要追加的内容
- 编码格式(可选,默认为
null,表示返回Buffer) - 回调函数,文件写入完成后调用。
const fs = require('fs');
const additionalContent = '\n这是追加的内容.';
fs.appendFile('./output.txt', additionalContent, 'utf8', (err) => {
if (err) {
console.error(err);
return;
}
console.log('写入成功.');
});
五、文件的复制
fs.copyFile方法用于异步拷贝文件。该方法接受三个参数:
- 被拷贝的文件路径
- 拷贝后的文件路径
- 回调函数
const fs = require('fs');
fs.copyFile('./file.txt', './copy.txt', (err) => {
if (err) {
console.error(err);
return;
}
console.log('复制成功.');
});
六、文件的删除
fs.copyFile方法用于异步删除文件。该方法接受两个参数:
- 被删除的文件路径
- 回调函数
fs.unlink('./output.txt', (err) => {
if (err) {
console.error(err);
return;
}
console.log('文件删除成功.');
});
七、文件与目录的创建与删除
创建目录
fs.mkdir方法用于异步创建目录。该方法接受三个参数:
- 创建的文件夹路径
- 选项对象
recursive和mode,recursive代表是否允许创建中间目录,mode是你创建时的可读写权限 - 回调函数
const fs = require('fs');
fs.mkdir('./output/a/b', { recursive: true }, (err) => {
if (err) {
console.error(err);
return;
}
console.log('文件夹创建成功.');
});
删除目录
要删除目录,可以使用fs.rmdir()方法或fs.rm()方法。fs.rmdir()方法只能删除空目录,而fs.rm()方法可以删除非空目录及其所有内容。
const fs = require('fs');
// 删除空目录
fs.rmdir('./output/a/b', (err) => {
if (err) {
console.error(err);
return;
}
console.log('删除成功');
});
// 删除非空目录及其所有内容
fs.rm('./output', { recursive: true, force: true }, (err) => {
if (err) {
console.error(err);
return;
}
console.log('删除成功');
});
八、文件与目录的信息查询
fs.stat()方法用于异步地获取文件或目录的信息。该方法接受两个参数:文件路径和回调函数。
const fs = require('fs');
fs.stat('./file.txt', (err, stats) => {
if (err) {
console.error(err);
return;
}
console.log('文件信息:');
console.log('是否是文件:', stats.isFile());
console.log('是否是目录:', stats.isDirectory());
console.log('文件大小:', stats.size);
console.log('文件创建时间:', stats.birthtime);
console.log('文件修改时间:', stats.mtime);
});