Node.js 的 fs 模块从版本 10 开始引入了基于 Promise 的 API,这使得使用 async/await 风格编写文件系统操作代码变得更加简洁和易于阅读。这些 Promise 化的方法位于 fs.promises 下,为异步文件操作提供了原生的 Promise 支持,无需再手动封装回调函数为 Promise。
以下是一些常用的 fs.promises 方法示例,配合 async/await 使用:
读取文件
const fs = require('fs').promises;
async function readFileAsync(filePath) {
try {
const data = await fs.readFile(filePath, 'utf8');
console.log(data);
} catch (err) {
console.error(`读取文件时发生错误: ${err}`);
}
}
readFileAsync('./example.txt');
写入文件
async function writeFileAsync(filePath, content) {
try {
await fs.writeFile(filePath, content, 'utf8');
console.log('文件写入成功');
} catch (err) {
console.error(`写入文件时发生错误: ${err}`);
}
}
writeFileAsync('./example.txt', 'Hello, Node.js with Promises!');
创建目录
async function mkdirAsync(dirPath) {
try {
await fs.mkdir(dirPath, { recursive: true }); // recursive 选项允许创建多级目录
console.log('目录创建成功');
} catch (err) {
console.error(`创建目录时发生错误: ${err}`);
}
}
mkdirAsync('./newDir');
删除文件
async function unlinkAsync(filePath) {
try {
await fs.unlink(filePath);
console.log('文件删除成功');
} catch (err) {
console.error(`删除文件时发生错误: ${err}`);
}
}
unlinkAsync('./example.txt');
通过上述示例可以看出,使用 fs.promises 结合 async/await 不仅使代码更加清晰,也提高了错误处理的一致性和代码的可维护性。
声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
真诚赞赏,手留余香
赞赏