大家好!我是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路由
思路:
例子:
相对与js执行文件所在目录创建test的目录
fs.mkdirSync(path.join(__dirname, './test'));
fsPromises.stat(path[, options])
| |
返回的 对象中的数值是否应为 bigint。 默认值: false。
使用给定的 path 的 对象履行。
fs.stat('./yma16', (err, stats) => {
console.log(stats,'stats')
if (err) {
console.log('不存在')
} else {
console.log('存在')
}
})
创建目录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()