nodejs循环创建文件夹
1、for循环版本
const path = require('path');
const fs = require('fs');
const mkDir = (dirPath) =>{
return new Promise((resolve,reject)=>{
const pathArr = dirPath.split('/');
const pathLen = pathArr.length -1;
var endPath = [];
const flag = true;
for(var i = 0; i < pathArr.length; i++) {
let currentPath = pathArr[i];
endPath.push(currentPath);
let targetPath = path.join(process.cwd(), './' + endPath.join('/'));
fs.access(targetPath,err =>{
if(err) {
fs.mkdir(targetPath,err =>{
if(err) {
flag = false;
console.log('err',err,)
reject(err)
return
}
})
};
if(i === pathLen) {
resolve(true)
}
});
if(!flag) {
break;
}
};
})
}
mkDir('./src/component2')
mkDir('./src/component/component1')
2、递归版本
const path = require('path');
const fs = require('fs');
const mkDir = (dirPath) => {
const dirName = dirPath;
if(fs.existsSync(dirName)) {
return true;
}else {
if(mkDir(path.dirname(dirName))) {
fs.mkdirSync(dirName);
return true;
}
}
};
mkDir('./src/component/component1')
3、循环读取
function readFileList(dir, collectObj) {
let {
filesList,
dirsList,
} = collectObj
const files = fs.readdirSync(dir);
files.forEach((item, index) => {
var fullPath = path.join(dir, item);
const stat = fs.statSync(fullPath);
if (stat.isDirectory()) {
dirsList.push(fullPath);
readFileList(path.join(dir, item), collectObj);
} else {
filesList.push(fullPath);
}
});
return collectObj;
}