浅谈Nodejs文件模块中的fs.mkdir和fs.rmdir


当前第2页 返回上一页

4.gif

5.gif

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);//会报错

});

使用结果(报错)

6.gif

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) {

    // 1:判断dir的文件信息 statObj 是目录还是 文件

    if (statObj.isDirectory()) {

      // 1.1 读取文件夹fs.readdir 回调函数 里可以拿到文件夹读取结果

      fs.readdir(dir, function (err, dirs) {

        //   遍历 文件夹中文件,path 拼接 父文件名称+ 子文件名称

        dirs = dirs.map((item) => path.join(dir, item));

        // 把目录里面 的拿出来,一个删除后 删除下一个

        let index = 0;

        function step() {

          // 将子文件都删除完后,删除自己

          if (index === dirs.length) return fs.rmdir(dir, cb);

          //删除第一个成功后 继续调用rmdir 删除下一个子文件,直到index===dirs.length 时 删除自己

          rmdir(dirs[index++], step);

        }

        step();

      });

    } else {

      // 1.2 dir是文件 直接删除 用fs.unlink

      fs.unlink(dir, cb);

    }

  });

}

测试

1

2

3

rmdir("a", function () {

  console.log("删除成功");

});

执行结果

7.gif

并行版本

代码实现

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("并行删除成功");

});

执行结果

8.gif

并行和串行的区别

串行 理解成单线程 要根据上一个执行结束后才能执行下一个 并行 异步执行 彼此之间无依赖关系 那么后者会比前者效率上更高效些些

文件目录的操作本质

  • 文件目录本质:是树形结构数据

  • 文件目录的操作是对树形结构的数据的操作

  • 留个坑位 下次写 树形结构的了解

更多编程相关知识,请访问:编程教学!!

以上就是浅谈Nodejs文件模块中的fs.mkdir和fs.rmdir的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

如何查看nodejs是否安装成功

nodejs怎么实现下载excel文件功能?

使用源码如何编译安装nodejs

一文快速了解nodejs中crypto模块的用法

3个值得收藏的实用nodejs软件包

nodejs与javascript的区别

nodejs可以应用于那些场景?

浅谈nodejs如何进行多线程处理

node.js怎么引用外部js

nodejs如何导入模块?require的执行过程介绍

更多相关阅读请进入《nodejs》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...