乐趣区

关于node.js: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, 请应用官网的递归版本,否则应用形式一。

形式一从网上找来而后增加的本人我的项目,有局部批改。网上版本是转载的,不晓得出处是哪里,所以就没有标注。

退出移动版