本文摘自PHP中文网,作者青灯夜游,侵删。
本篇文章带大家了解一下Nodejs文件操作fs.mkdir和fs.rmdir。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
【推荐学习:《nodejs 教程》】
fs.mkdir文件目录新增
案例使用
1 2 3 4 5 6 7 8 | fs.mkdir("a", function (err) {
if (err) {
console.log(err);
return;
}
console.log("success...");
});
|
- 跨级在不存在的目录下新增目录 报错啦!!,node本身的内置模块是不支持不存在的目录下新增目录的(这就是我要干的事)

fs.mkdir的加强版
递归版本
思路
对要新增的path路径根据"/"进行切割生成数组缓存
index 初始值= 1;对路径对应数组依次进行slice(0, index) 截取后join('/')成path字符串currentPath
fs.stat 用于描述文件的状态,如果不存在文件,就发生错误
上一天发生错误调用 fs.mkdir(currentPath, 递归调用自己);
文件存在调用自己
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | function mkdir(pathStr, cb) {
let pathList = pathStr.split("/");
let index = 1;
function make(err) {
if (err) return cb(err);
if (index === pathList.length + 1) return cb();
let currentPath = pathList.slice(0, index++).join("/");
fs.stat(currentPath, function (err) {
if (err) {
fs.mkdir(currentPath, make);
console.log({ currentPath });
} else {
make();
}
});
}
make();
}
|
测试:
此时已经不报错了
1 2 3 4 | mkdir("a/b/c/d", function (err) {
if (err) console.log(err);
console.log("success...");
});
|
打印效果


for循环+await版本
实现思路
如果目录存在 返回 true ,如果目录不存在 返回false
3. 不存在 fs.mkdir(currentPath)
实现代码
1 2 3 4 5 6 7 8 9 10 11 | const fs = require("fs").promises;
const { existsSync } = require("fs");
async function mkdir(pathStr, cb) {
let pathList = pathStr.split("/");
for (let i = 1; i <= pathList.length; i++) {
let currentPath = pathList.slice(0, i).join("/");
if (!existsSync(currentPath)) {
await fs.mkdir(currentPath);
}
}
}
|
调用 将递归调用 平铺称then 链式调用
1 2 3 4 5 6 7 | mkdir("a/b/c/d")
.then(() => {
console.log("创建成功");
})
.catch((err) => {
console.log(err);
});
|
打印效果
阅读剩余部分
相关阅读 >>
浅谈nodejs中的callback回调
浅谈nodejs中的模块规范
浅谈nodejs中的?双工流
了解nodejs中的可读流
node.js怎么引用外部js
详解nodejs+nest实现的短链接服务
前端用nodejs能做什么
nodejs的npm常用命令集合
nodejs设置node_env时发生错误怎么解决?
谈谈使用nodejs增删改查本地json文件的方法
更多相关阅读请进入《nodejs》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » 浅谈Nodejs文件模块中的fs.mkdir和fs.rmdir