[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(){ })

总结:
【[NodeJS]创建多级目录 - mkdir】方式二是 v10.0.0 版本以后出现的,如果你版本>=v10.0.0,请使用官方的递归版本,否则使用方式一。
方式一从网上找来然后添加的自己项目,有部分修改。 网上版本是转载的,不知道出处是哪里,所以就没有标注。

    推荐阅读