文章目录
- ⭐前言
- ⭐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'+'/'+iawait 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()
创建目录成功!
⭐结束
感谢你的阅读,如有不足或者错误欢迎指出!