关于通过Promise对象达到完整copy文件夹的目的Node.js

    诚惶诚恐地写下这篇博客,在此之前好像还没试过今天这样从一大早开始coding到晚上,在今天将过明日将至的时候把这个功能做出来了,实在是万分开心,在开心之余有几点小心得,先记下来免得以后忘了:

1.关于Promise对象,在正常情况下调用resolve,异常时调用reject。(应该还有的,等我明天补充,我得早点休息明天才有精力coding)。

    关于windows下fs.copyFile()作用于文件夹时,好像是真的,没有权限。所以我通过fs.mkdir()的方式来实现。以及=>(箭头函数)用起来真是太爽了。

    关于windows下分隔符,用"/\\"来实现转译("/\\"="\")。

    关于取得路径下的子文件路径通过类似 Path+"/\\"+item 的方式实现,这一句就可以作为路径来使用~

2.关于码代码,可以不急不慢地来,不确定的对象可以一步步通过console.log()来确认是否可以得到这个对象,实现某个功能。一旦急躁了真是脑子一团乱麻。


3.写代码真的好开心阿~~

好了,就先写到,后边把代码贴上。我要去睡觉了,现在独霸客厅,在客厅写代码睡觉真的爽。学了一段时间的WEB了,感觉写下了这篇东西,算是终于有丶东西了。希望明天又是开心的一天嘿嘿。

const fs = require("fs");

function cpdir(oldDirPath,newDirPath) {
  return new Promise(function (resolve,reject) {

    fs.mkdir(newDirPath,err=>{
      reject(err);
    });

    fs.readdir(oldDirPath,(err,list)=>{
      if (err) {
        reject(err);
      }else {
        resolve(list);
        list.forEach(item=>{
          fs.stat(oldDirPath+"/\\"+item,(err,stats)=>{
            if (stats.isFile()) {
              fs.copyFile(oldDirPath+"/\\"+item,newDirPath+"/\\"+item,err=>{
                console.log(err);
              });
            }else {
              oldDirPath += ("/\\"+item);
              newDirPath += ("/\\"+item);
              cpdir(oldDirPath,newDirPath);
            }
          });

        });
      }
    });

  });
}

猜你喜欢

转载自blog.csdn.net/timey0/article/details/80979268