57 # 目录操作

简介: 57 # 目录操作

同步创建文件夹

const fs = require("fs");
fs.mkdirSync("a");

创建目录得保证父路径存在

fs.mkdirSync("a/b");

不然会报错

下面实现没有父路径存在也能创建成功的方法

同步方法:

function mkdirSyncP(paths) {
    let arr = paths.split("/");
    for (let i = 0; i < arr.length; i++) {
        let currentPath = arr.slice(0, i + 1).join("/");
        console.log("mkdirSyncP---currentPath---->", currentPath);
        // 如果文件夹不存在就创建
        if (!fs.existsSync(currentPath)) {
            fs.mkdirSync(currentPath);
        }
    }
}
mkdirSyncP("a/b/c/d/e");

异步方法:不会阻塞主线程

function mkdirP(paths, cb) {
    let arr = paths.split("/");
    let index = 0;
    function next() {
        // 如果路径不存在就停止创建
        if (index === arr.length) return cb();
        let currentPath = arr.slice(0, ++index).join("/");
        // fs.exists 被废弃,可以使用 fs.access 替代
        console.log("mkdirP---currentPath---->", currentPath);
        fs.access(currentPath, (err) => {
            // 没有文件夹就报错,报错就异步创建,不报错就 next
            if (err) {
                fs.mkdir(currentPath, next);
            } else {
                next();
            }
        });
    }
    next();
}
mkdirP("b/c/d/e/f/g", () => {
    console.log("异步创建成功");
});

异步方式二:上面用来递归,下面使用 for 循环 + async await 实现

const fs2 = require("fs").promises;
async function mkdirP2(paths) {
    let arr = paths.split("/");
    for (let i = 0; i < arr.length; i++) {
        let currentPath = arr.slice(0, i + 1).join("/");
        console.log("mkdirP2---currentPath---->", currentPath);
        // 如果文件夹不存在就创建
        try {
            await fs2.access(currentPath);
        } catch (error) {
            console.log(error);
            await fs2.mkdir(currentPath);
        }
    }
}
mkdirP2("c/d/e/f");

目录
相关文章
|
移动开发 小程序 API
【小程序质量提优解决方案】(三)内嵌H5页面访问受限
【小程序质量提优解决方案】(三)内嵌H5页面访问受限
1087 0
|
XML IDE 开发工具
别看你风吹头顶凉但你绝对没有过这样方便的插件Intellij IDEA 自带的 Vim
别看你风吹头顶凉但你绝对没有过这样方便的插件Intellij IDEA 自带的 Vim
237 0
|
数据库
Langchain中改进RAG能力的3种常用的扩展查询方法
有多种方法可以提高检索增强生成(RAG)的能力,其中一种方法称为查询扩展。我们这里主要介绍在Langchain中常用的3种方法
850 0
|
存储 人工智能 运维
阿里巴巴浙江云计算仁和液冷数据中心获评5A级(设计)绿色数据中心
9月15日,阿里巴巴浙江云计算仁和液冷数据中心在ODCC(开放数据中心委员会,以下同)2020峰会上获得数据中心绿色等级5 A(设计类)认证,成为全国首座绿色等级达5A的液冷数据中心。该数据中心绿色分级评估由ODCC联合中国信通院、TGGC(绿色网格,以下同)发起。阿里巴巴获得此项认证是2020年ODCC颁发的唯一一个5A设计类认证,是ODCC与绿色网格自2013年联合开展数据中心绿色等级评估以来颁发的全国第三个设计类5A等级奖牌,也是阿里巴巴继千岛湖数据中心获评5A绿色数据中心(设计)后又一座获此顶级殊荣的数据中心,再次展现了阿里巴巴数据中心的绿色节能实力。
阿里巴巴浙江云计算仁和液冷数据中心获评5A级(设计)绿色数据中心
|
数据采集 缓存 前端开发
服务器端渲染(SSR)
服务器端渲染(SSR)
|
12月前
|
人工智能 编解码 搜索推荐
深度测评-主动式智能导购 AI 助手构建的实现与优化
本文深度测评某平台提供的函数计算应用模板,用于快速搭建集成智能导购的电商网站。通过简洁直观的创建与部署流程,用户只需填写API Key等基本信息,即可完成配置。智能导购AI助手能通过多轮对话引导顾客明确需求,精准推荐商品,提升购物体验和转化率。系统支持自定义设置,具备高效、个性化、灵活扩展的特点。未来可引入更多维度推荐、机器学习及语音识别技术,进一步优化导购效果。
762 15
深度测评-主动式智能导购 AI 助手构建的实现与优化
|
数据采集 运维 监控
ARMS自定义监控
【8月更文挑战第25天】
418 3
|
Cloud Native 关系型数据库 分布式数据库
中国金融分布式数据库,阿里云双料冠军!
中国金融分布式数据库,阿里云双料冠军!
298 7
|
开发框架 安全 Java
Spring Framework远程代码执行漏洞复现(CVE-2022-22965)
Spring Framework存在远程代码执行漏洞,攻击者可通过该漏洞执行系统命令。
1277 1
Spring Framework远程代码执行漏洞复现(CVE-2022-22965)
|
存储 Java 数据建模
基于 SpringBoot+Vue 的网上图书商城管理系统(附源码,教程)上
基于 SpringBoot+Vue 的网上图书商城管理系统(附源码,教程)