本文摘自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与javascript的区别
深入了解nodejs中的mongoose工具
nodejs学习之了解域名解析模块dns
详解nodejs中的querystring模块
3个值得收藏的实用nodejs软件包
详解使用docker给nodejs程序打包的方法
windows环境下怎么安装nodejs?
前端用nodejs能做什么
深入浅析nodejs中的事件和事件循环
浅谈nodejs连接mysql数据库的方法
更多相关阅读请进入《nodejs》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » 浅谈Nodejs文件模块中的fs.mkdir和fs.rmdir