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

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理