使用场景:需要把字符串写入一个路径下的某个文件,但不知道这个路径是否存在,文件是否存在!
// 方法调用
writePathFile("./src/main/webapp/static/dist/js/common/base.min.js","helle world")

// 方法
function writePathFile(path, codes) {
    var pathA = path.split("/");
    pathA.pop();
    createDirsSync(pathA.join("/"), function () {
    // 写入文件内容的回调函数
        fs.writeFile(path, codes, function (value) {
            codes = "";
        });
    })
}

// 判断有没有当前文件夹,有就查询下一层文件夹,没有就创建
function createDirsSync(dir, callback) {
    var dirs = dir.split('/');
    if (dirs[0] == '.' || dirs[0] == "..") {
        dirs[1] = dirs[0] + "/" + dirs[1];
        dirs.shift();
    }
    if (dirs[dirs.length - 1] == "") {
        dirs.pop();
    }
    var len = dirs.length;
    var i = 0;
    var url = dirs[i];
    // 启动递归函数
    mkDirs(url);
    // 逐级检测有没有当前文件夹,没有创建,有就继续检测下一级
    function mkDirs(url) {
        if (fs.existsSync(url)) {
            i = i + 1;
            if (len > i) {
                url = url + "/" + dirs[i];
                mkDirs(url);
            }else{
                callback();
            }
        } else {
            mkDir(url)
        }
    }
// 创建文件
    function mkDir(url) {
        fs.mkdirSync(url);
        i = i + 1;
        if (len > i) {
            url = url + "/" + dirs[i];
            mkdir(url);
        } else {
            callback();
        }
    }
}


jsure
137 声望4 粉丝

爱学习,爱劳动。