[NodeJS]创建多级目录 - mkdir
环境: 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,请使用官方的递归版本,否则使用方式一。
方式一从网上找来然后添加的自己项目,有部分修改。 网上版本是转载的,不知道出处是哪里,所以就没有标注。