Nodejs 递归创建路径

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37263637/article/details/84842766

Nodejs 在10之前原生并不支持递归创建文件目录,即如果创建一个./study/node/files 目录,如果node目录不存在,则会直接报错。

1 测试

const fs = require('fs');
fs.mkdir('./study/node/files ', (err) => {
    if (err) throw err;
    console.log("mkdir success");
  });

则会直接抛出错误:

if (err) throw err;             ^
Error: ENOENT: no such file or directory, mkdir 'C:\Users\ha.ha\Desktop\sample\test\study\node\files '

2 Node 10.14.1 版本及以上

而Nodejs 10 原生支持递归创建目录,添加该参数即可:

fs.mkdir(path [,options],callback)
path <string> | <Buffer> | <URL>
options <Object> | <integer>
	recursive <boolean> Default: false
	mode <integer> Not supported on Windows. Default: 0o777.
callback <Function>

第一个参数为路径,第二个参数为是否递归创建和权限参数.第二个参数中recursive设置为true即支持递归创建。

const fs = require('fs');
fs.mkdir('./study/node/files', {recursive: true}, (err) => {
    if (err) throw err;
});

以上代码在10.14.1上测试可用
Node mkdir API文档:https://nodejs.org/dist/latest-v10.x/docs/api/fs.html#fs_fs_mkdir_path_options_callback

3 Node低版本方案

var fs = require("fs");  
var path = require("path");  
  
function mkdirs(dirname, callback) {  
    fs.exists(dirname, function (exists) {  
        if (exists) {  
            callback();  
        } else {  
            //console.log(path.dirname(dirname));  
            mkdirs(path.dirname(dirname), function () {  
                fs.mkdir(dirname, callback);  
            });  
        }  
    });  
} 

mkdirs('./hello/world/teset', function(err){
    if (err) throw err;
});

//以上代码来自:RockeyCai

猜你喜欢

转载自blog.csdn.net/m0_37263637/article/details/84842766
今日推荐