node笔记_生成自定义目录文件

文章目录

    • ⭐前言
    • ⭐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生成目录

思路:

  1. 检查路径是否存在
  2. 不存在的路径深度遍历生成逐级目录

mkdirSync创建目录

例子:
相对与js执行文件所在目录创建test的目录

fs.mkdirSync(path.join(__dirname, './test')); 

node笔记_生成自定义目录文件_第1张图片

stat判断目录是否存在

fsPromises.stat(path[, options])

  • path | |
    options
    bigint 返回的 对象中的数值是否应为 bigint。 默认值: false。
    返回: 使用给定的 path 的 对象履行。
    fs.stat('./yma16', (err, stats) => {
    	console.log(stats,'stats')
    	if (err) {
    		console.log('不存在')
    	} else {
    		console.log('存在')
    	}
    })
    

    node笔记_生成自定义目录文件_第2张图片

    mkdir创建目录

    创建目录yma16

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

    node笔记_生成自定义目录文件_第3张图片

    动态创建目录文件

    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()
    
    

    创建目录成功!
    node笔记_生成自定义目录文件_第4张图片

    ⭐结束

    感谢你的阅读,如有不足或者错误欢迎指出!
    node笔记_生成自定义目录文件_第5张图片

    你可能感兴趣的:(笔记,node.js)