node检查目录存在两种方式

node检查目录存在两种方式

代码1:异步的方式

1
2
3
4
5
6
7
8
9
10
// 检查目标目录是否存在,不存在则创建
try {
await fs.promises.access(targetDir);
} catch (err) {
if (err.code === 'ENOENT') {
await fs.promises.mkdir(targetDir, { recursive: true });
} else {
throw err;
}
}

代码2:同步的方式

1
2
3
4
5
// 确保输出目录存在
const outputDir = path.dirname(outputPath);
if (!fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir, { recursive: true });
}

这两种代码的作用都是确保目录存在,但是实现方式稍有不同。

第一个代码片段使用了异步的方式,通过fs.promises.access来检查目录是否存在,如果不存在则使用fs.promises.mkdir创建目录。这种方式是非阻塞的,适用于异步编程环境,例如Node.js的事件循环。

第二个代码片段则是同步的方式,通过fs.existsSync检查目录是否存在,如果不存在则使用fs.mkdirSync同步创建目录。这种方式会阻塞程序的执行直到目录创建完成,适用于一次性操作或者在初始化阶段。

选择哪种方式取决于你的应用场景。如果你的代码是在一个异步环境中运行,例如Node.js服务器,那么第一个实现更好,因为它不会阻塞事件循环。如果你的代码是在一个简单的脚本中运行,而且目录创建是一次性的操作,那么第二个实现可能更简单和合适。