首页 > Web开发 > 详细

NodeJS异步、同步 创建多层文件夹

时间:2014-02-20 20:35:20      阅读:626      评论:0      收藏:0      [点我收藏+]

同步:

bubuko.com,布布扣
//创建多层文件夹 同步
function mkdirsSync(dirpath, mode) { 
    if (!fs.existsSync(dirpath)) {
        var pathtmp;
        dirpath.split(path.sep).forEach(function(dirname) {
            if (pathtmp) {
                pathtmp = path.join(pathtmp, dirname);
            }
            else {
                pathtmp = dirname;
            }
            if (!fs.existsSync(pathtmp)) {
                if (!fs.mkdirSync(pathtmp, mode)) {
                    return false;
                }
            }
        });
    }
    return true; 
}
bubuko.com,布布扣

 

异步:

bubuko.com,布布扣
//创建多层文件夹 异步
function mkdirs(dirpath, mode, callback) {
    callback = callback ||
    function() {};

    fs.exists(dirpath,
    function(exitsmain) {
        if (!exitsmain) {
            //目录不存在
            var pathtmp;
            var pathlist = dirpath.split(path.sep);
            var pathlistlength = pathlist.length;
            var pathlistlengthseed = 0;

            mkdir_auto_next(mode, pathlist, pathlist.length,
            function(callresult) {
                if (callresult) {
                    callback(true);
                }
                else {
                    callback(false);
                }
            });

        }
        else {
            callback(true);
        }

    });
}

// 异步文件夹创建 递归方法
function mkdir_auto_next(mode, pathlist, pathlistlength, callback, pathlistlengthseed, pathtmp) {
    callback = callback ||
    function() {};
    if (pathlistlength > 0) {

        if (!pathlistlengthseed) {
            pathlistlengthseed = 0;
        }

        if (pathlistlengthseed >= pathlistlength) {
            callback(true);
        }
        else {

            if (pathtmp) {
                pathtmp = path.join(pathtmp, pathlist[pathlistlengthseed]);
            }
            else {
                pathtmp = pathlist[pathlistlengthseed];
            }

            fs.exists(pathtmp,
            function(exists) {
                if (!exists) {
                    fs.mkdir(pathtmp, mode,
                    function(isok) {
                        if (!isok) {
                            mkdir_auto_next(mode, pathlist, pathlistlength,
                            function(callresult) {
                                callback(callresult);
                            },
                            pathlistlengthseed + 1, pathtmp);
                        }
                        else {
                            callback(false);
                        }
                    });
                }
                else {
                    mkdir_auto_next(mode, pathlist, pathlistlength,
                    function(callresult) {
                        callback(callresult);
                    },
                    pathlistlengthseed + 1, pathtmp);
                }
            });

        }

    }
    else {
        callback(true);
    }

}
bubuko.com,布布扣

NodeJS异步、同步 创建多层文件夹

原文:http://www.cnblogs.com/cejay/p/3557163.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!