Node.js 创建或使用现有目录时避免竞争条件
示例
由于Node的异步特性,请首先创建或使用目录:
用检查它的存在,然后fs.stat()
根据存在检查的结果来创建或使用它,
如果在检查时间到创建时间之间创建了文件夹,则可能导致竞争状态。下面的方法进行包装,并在捕捉错误的包装器中进行包装,以使异常通过(如果已存在)其代码。如果错误是其他错误,例如(拒绝通过),则像本机函数一样抛出或传递错误。fs.mkdir()fs.mkdirSync()EEXISTEPERM
异步版本fs.mkdir()
var fs = require('fs');
function mkdir (dirPath, callback) {
fs.mkdir(dirPath, (err) => {
callback(err &&err.code!== 'EEXIST' ? err : null);
});
}
mkdir('./existingDir', (err) => {
if (err)
return console.error(err.code);
//在这里使用`。/existingDir`
});同步版本fs.mkdirSync()
function mkdirSync (dirPath) {
try {
fs.mkdirSync(dirPath);
} catch(e) {
if (e.code!== 'EEXIST' ) throw e;
}
}
mkdirSync('./existing-dir');
//现在用`。/existing-dir`做点什么
热门推荐
1 如何训练狗狗不叫
2 训练狗狗不叫
3 训练狗狗随行
4 怎么训练狗狗不叫
7 训练比熊狗狗教程
10 上海狗狗训练
11 怎么训练狗狗上厕所
12 训练狗狗趴下
13 狗狗服从训练
14 训练狗狗拒食
15 训练狗狗笑
16 训练狗狗大便
17 训练狗狗立
18 训练狗狗捡东西