环境:Ubuntu16.04以下两种方案采用异构方式创建目录,同步方式相同。方法1.import{promisesasfs}from"fs";import*aspathfrom'path';/***读取路径信息*@param{string}pathpath*/asyncfunctiongetStat(dir){try{conststat=awaitfs.stat(dir);返回统计;}赶上(错误){返回错误;}}/***创建路径*@param{string}dir路径*/functionmkdir(dir){returnnewPromise((resolve,reject)=>{fs.mkdir(dir).then(function(){console.log('目录创建成功:',dir);resolve(true)}).catch(function(){console.log('创建目录失败');resolve(false)})})}/***路径是否存在,不存在则创建*@param{string}dir路径*/exportasyncfunctionmkdirRecursions(dir){letisExists=awaitgetStat(dir);//如果路径不是文件,则返回trueif(isExists&&isExists.isDirectory()){returntrue;}elseif(isExists){返回假;}//如果路径不存在,获取上层路径lettempDir=path.parse(dir).dir;//递归判断,如果上层目录不存在,代码会一直循环到这里,直到目录存在letstatus=awaitmkdirRecursions(tempDir);让mkdirStatus;如果(状态){mkdirStatus=awaitmkdir(dir);}returnmkdirStatus;}//example1//mkdirRecursions('./2019/1/2/3');方法二fs.mkdir('./2019/1/2/3',{recursive:true}).then(function(data){console.log(data)}).catch(function(){})总结:方法2是v10。0.0版本后出现,如果你的版本>=v10.0.0,请使用官方递归版本,否则使用方法一方法一从网上找到并添加自己的项目,并做了一些修改。转载网络版。不知道出处在哪里,所以没有标注。
