如果目录不存在,以下是创建目录的正确方法吗?
它应该对脚本有完全的权限并且可以被其他人阅读。
var dir = __dirname + '/upload';
if (!path.existsSync(dir)) {
fs.mkdirSync(dir, 0744);
}
原文由 Whisher 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果目录不存在,以下是创建目录的正确方法吗?
它应该对脚本有完全的权限并且可以被其他人阅读。
var dir = __dirname + '/upload';
if (!path.existsSync(dir)) {
fs.mkdirSync(dir, 0744);
}
原文由 Whisher 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如一些答案指出的那样,从节点 10 开始,您可以将 recursive:true
用于 mkdir
还没有指出的是, 当使用 recursive:true 时,如果目录已经存在,mkdir 不会返回错误。
所以你可以这样做:
fsNative.mkdir(dirPath,{recursive:true},(err) => {
if(err) {
//note: this does NOT get triggered if the directory already existed
console.warn(err)
}
else{
//directory now exists
}
})
同样从节点 10 开始,您可以通过要求从 fs/promises
获得所有 fs 函数的 Promise 版本
所以把这两件事放在一起,你会得到这个简单的解决方案:
import * as fs from 'fs/promises';
await fs.mkdir(dirPath, {recursive:true}).catch((err) => {
//decide what you want to do if this failed
console.error(err);
});
//directory now exists
原文由 Flion 发布,翻译遵循 CC BY-SA 4.0 许可协议
5 回答4.8k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
5 回答1.9k 阅读
2 回答1.3k 阅读✓ 已解决
3 回答2k 阅读
1 回答3.2k 阅读
对于个人目录:
或者,对于嵌套目录: