文章目录
- ⭐前言
- ⭐node生成目录
- 💖 mkdirSync创建目录
- 💖 stat判断目录是否存在
- 💖 mkdir创建目录
- 💖 动态创建目录文件
 
- ⭐结束
 
⭐前言
大家好!我是yma16,本文分享node生成自定义目录文件。
 背景:
 解决处理生成自定义文件时候没有指定目录的问题
 效果:
 
往期文章
 node_windows环境变量配置
 node_npm发布包
 linux_配置node
 node_nvm安装配置
 node笔记_http服务搭建(渲染html、json)
 node笔记_读文件
 node笔记_写文件
 node笔记_连接mysql实现crud
 node笔记_formidable实现前后端联调的文件上传
 node笔记_koa框架介绍
 node_koa路由
⭐node生成目录
思路:
- 检查路径是否存在
- 不存在的路径深度遍历生成逐级目录
💖 mkdirSync创建目录
例子:
 相对与js执行文件所在目录创建test的目录
fs.mkdirSync(path.join(__dirname, './test')); 

💖 stat判断目录是否存在
fsPromises.stat(path[, options])
- path <string> | <Buffer> | <URL>
 options<Object>
 bigint<boolean> 返回的 <fs.StatFs> 对象中的数值是否应为 bigint。 默认值: false。
 返回:<Promise> 使用给定的 path 的 <fs.StatFs> 对象履行。
fs.stat('./yma16', (err, stats) => {
	console.log(stats,'stats')
	if (err) {
		console.log('不存在')
	} else {
		console.log('存在')
	}
})

💖 mkdir创建目录
创建目录yma16
fs.mkdir('./yma16', err => {
	if (err) {
		console.log('创建失败')
	} else {
		console.log('创建成功')
	}
})

💖 动态创建目录文件
const fs = require('fs');
const path = require('path');
/**
 * 读取路径信息
 * @param {string} path 路径
 */
function getStat(path) {
	return new Promise((resolve, reject) => {
		fs.stat(path, (err, stats) => {
			if (err) {
				resolve(false);
			} else {
				resolve(stats);
			}
		})
	})
}
/**
 * 创建路径
 * @param {string} dir 路径
 */
function mkdir(dir) {
	return new Promise((resolve, reject) => {
		fs.mkdir(dir, err => {
			if (err) {
				resolve(false);
			} else {
				resolve(true);
			}
		})
	})
}
/**
 * 路径是否存在,不存在则创建
 * @param {string} dir 路径
 */
async function dirExists(dir) {
	let isExists = await getStat(dir);
	//路径存在是目录
	if (isExists && isExists.isDirectory()) {
		return true;
	} else if (isExists) {
		// 文件
		return false;
	}
	//拿到上级路径
	let tempDir = path.parse(dir).dir;
	//递归判断,如果上级目录也不存在,则会代码会在此处继续循环执行,直到目录存在
	let status = await dirExists(tempDir);
	let mkdirStatus;
	if (status) {
		mkdirStatus = await mkdir(dir);
	}
	return mkdirStatus;
}
async function createFile() {
	for(let i=0;i<10;++i){
		let baseDir='./base'+'/'+i
		await dirExists(baseDir);
		const jsonContent = {
			name: 'yma16'
		}
		const jsonContentStr = JSON.stringify(jsonContent, null, '\t')
		fs.writeFile(baseDir + '/a.json', jsonContentStr, err => {
			if (err) return console.log(err);
			console.log('写入json成功')
		})
	}
}
createFile()
创建目录成功!
 
⭐结束
感谢你的阅读,如有不足或者错误欢迎指出!
 



















