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;
});
Nodejs 递归创建路径
学完还想练练?点这里。