当前第2页 返回上一页


fs.rmdir文件目录删除
案例使用
对存在子目录的目录直接进行fs.rmdir删除
1 2 3 4 5 | const fs = require ( "fs" );
const path = require ( "path" );
fs. rmdir ( "a" , function (err) {
console.log(err);
});
|
使用结果(报错)

fs.rmdir加强版
串行版本
思路
fs.stat 会返回文件的具体信息:文件的状态 文件的信息,修改时间,创建时间,目录状态;fs.stat 的回调里第二参数是获取到文件对象,对象的方法 :isFile,isDirectory
isFile 直接 fs.unlink(dir, cb);删除当前文件
isDirectory 调用fs.readdir返回子目录组成的数组
对子目录数组进行map遍历&父文件名称+子文件名称拼接path.join(dir, item))
对拼接过的path数组依次进行递归调用自己
子目录全删除后删除本身
代码实现
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 rmdir(dir, cb) {
fs.stat(dir, function (err, statObj) {
if (statObj.isDirectory()) {
fs.readdir(dir, function (err, dirs) {
dirs = dirs.map((item) => path.join(dir, item));
let index = 0;
function step() {
if (index === dirs.length) return fs.rmdir(dir, cb);
rmdir(dirs[index++], step);
}
step();
});
} else {
fs.unlink(dir, cb);
}
});
}
|
测试
1 2 3 | rmdir( "a" , function () {
console.log( "删除成功" );
});
|
执行结果

并行版本
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 | const fs = require( "fs" ).promises;
const path = require( "path" );
async function rmdir(dir) {
let statObj = await fs.stat(dir);
if (statObj.isDirectory) {
let dirs = await fs.readdir(dir);
await Promise.all(dirs.map((item) => rmdir(path.join(dir, item))));
await fs.rmdir(dir);
} else {
return fs.unlink(dir);
}
}
|
调用
1 2 3 | rmdir( "a" ).then(() => {
console.log( "并行删除成功" );
});
|
执行结果

并行和串行的区别
串行 理解成单线程 要根据上一个执行结束后才能执行下一个
并行 异步执行 彼此之间无依赖关系
那么后者会比前者效率上更高效些些
文件目录的操作本质
文件目录本质:是树形结构数据
文件目录的操作是对树形结构的数据的操作
留个坑位 下次写 树形结构的了解
更多编程相关知识,请访问:编程教学!!
以上就是浅谈Nodejs文件模块中的fs.mkdir和fs.rmdir的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
如何查看nodejs是否安装成功
nodejs怎么实现下载excel文件功能?
使用源码如何编译安装nodejs?
一文快速了解nodejs中crypto模块的用法
3个值得收藏的实用nodejs软件包
nodejs与javascript的区别
nodejs可以应用于那些场景?
浅谈nodejs如何进行多线程处理
node.js怎么引用外部js
nodejs如何导入模块?require的执行过程介绍
更多相关阅读请进入《nodejs》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » 浅谈Nodejs文件模块中的fs.mkdir和fs.rmdir