由于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`做点什么