环境: Ubuntu 16.04
上面两个计划都是采纳异部形式进行目录创立,同步形式同理。
形式一、
import {promises as fs} from "fs";
import * as path from 'path';
/**
* 读取门路信息
* @param {string} path 门路
*/
async function getStat(dir) {
try {const stat = await fs.stat(dir);
return stat;
} catch (error) {return false;}
}
/**
* 创立门路
* @param {string} dir 门路
*/
function mkdir(dir) {return new Promise((resolve, reject) => {fs.mkdir(dir).then(function(){console.log('Directory created successfully:', dir);
resolve(true)
}).catch(function(){console.log('failed to create directory');
resolve(false)
})
})
}
/**
* 门路是否存在,不存在则创立
* @param {string} dir 门路
*/
export async function mkdirRecursions(dir) {let isExists = await getStat(dir);
// 如果该门路且不是文件,返回 true
if (isExists && isExists.isDirectory()) {return true;}
else if(isExists){return false;}
// 如果该门路不存在,拿到下级门路
let tempDir = path.parse(dir).dir;
// 递归判断,如果下级目录也不存在,则会代码会在此处持续循环执行,直到目录存在
let status = await mkdirRecursions(tempDir);
let mkdirStatus;
if (status) {mkdirStatus = await mkdir(dir);
}
return mkdirStatus;
}
// example1
//mkdirRecursions('./2019/1/2/3');
形式二
fs.mkdir('./2019/1/2/3', { recursive: true}).then(function(data){console.log(data)
}).catch(function(){})
总结:
形式二是 v10.0.0 版本当前呈现的,如果你版本 >=v10.0.0, 请应用官网的递归版本,否则应用形式一。
形式一从网上找来而后增加的本人我的项目,有局部批改。网上版本是转载的,不晓得出处是哪里,所以就没有标注。