zoukankan      html  css  js  c++  java
  • nodejs之同/异步创建多层目录

    nodejs之同&异步创建多层目录

    背景

    当项目里需要同时创建多层目录的功能,但低版本的nodejs并没有提供快捷的api。

    尽管在v10.12.0版本 mkdir() 第二个参数支持recursive 参数,为true时能递归创建,但有版本不兼容问题。

    api

    实现

    /**
     * nodejs递归创建目录
    */
    var fs = require('fs');
    var path = require('path');
    
    // 异步 网上版本, 但fs.exists()已经废弃了
    function async(dirname, callback) {
       fs.exists(dirname, (exists) => {
            if (exists) 
                callback();
            else {
                async(path.dirname(dirname), () => {
                    fs.mkdir(dirname, callback);
                });
            }
       });
    }
    
    // 异步 使用fs.stat()代替exists
    function async(dirname, callback) {
        fs.stat(dirname, (err, stat) => { 
            if (stat) 
                callback();
            else {
            async(path.dirname(dirname), () => {
                fs.mkdir(dirname, callback);
            });
            }
       });
     }
     
    // 同步 保证执行完成之后再执行后续操作
    function sync(dirname) {
        if (fs.existsSync(dirname)) {
            return true;
        } 
        if (sync(path.dirname(dirname))) {
            fs.mkdirSync(dirname);
            return true;
        }
    }
    // test
    function test() {
        console.log('=====开始创建=====');
        async('./a/bb/ccc/eeee', (err)=>{});
        // sync('./a/bb/ccc/eeee', (err) => { });
        console.log('=====创建结束=====');
    }
     
    test()
    
  • 相关阅读:
    Zend Studio 9.0.2破解文件和注册码下载
    shell之netstat命令
    shell之arp命令
    Linux网络运维相关
    Linux静态ip设置及一些网络设置
    shell之进程
    shell之小知识点
    软连接与硬链接
    shell之dialog提示窗口
    Linux特殊权限位
  • 原文地址:https://www.cnblogs.com/wzs5800/p/12772326.html
Copyright © 2011-2022 走看看