当前位置: 移动技术网 > IT编程>开发语言>JavaScript > nodejs文件夹深层复制功能

nodejs文件夹深层复制功能

2019年09月06日  | 移动技术网IT编程  | 我要评论

前段时间接到领导要求,运营那边会时不时的给我一些.html文件,让我呢把里面的某些东西给解析出来插入到数据库。本来就是解析dom元素,然后插入,可是有点麻烦的是运营给我的文件都是多层级的:比如下面的:

我所需要是将运营给的文件夹中每个文件都复制到某个文件夹中(test),然后取test中所有文件进行解析。开始的时候本人崩着能吃苦耐劳的精神,每次都是复制粘贴,可是这是容易出错不说,关键我们是个程序员啊,就应该用程序员的方式来解决嘛。有些同志会说这很简单啊 找到'e:819数据819'这个文件夹,将它内部的每个文件夹读出来组成一个数组,在循环遍历里面的每个文件进行复制就可以了啊

fs.readdir('e:/819数据/819','utf-8',(err,filelist)=>{
  filelist.foreach((file,index)=>{
    let url = from+file+'/'
    fs.readdir(from+file,'utf-8',(error,singlefile)=>{
      singlefile.foreach((fileinner,i)=>{
        fs.writefilesync(`${to}${name++}.html`, fs.readfilesync(url+fileinner));
      })
    })
  })
})

这就是上面的代码实现,开始我也是图省事就这样写了(把运营同事给的文件夹中所有文件复制到我的test目录中),可是mmp后来发现有的文件会有多重文件夹的嵌套

 

这时候就不能在一层的一层的判断了,万一运营给的嵌套10层,总不能为了每个文件夹的复制写一串代码吧,这里只能使用递归来解析了。

let name = 1
copyitdigui('e:/819数据/819','e:/test/');
function copyitdigui(from, to) {
searchfile(from, to);
}
function searchfile(from, to){
let stat = fs.lstatsync(from);
if(stat.isdirectory()){//判断是文件夹就继续下面的遍历,否则直接进行文件的复制和重名了
  fs.readdir(from,'utf-8',(err,filelist)=>{
    filelist.foreach((file,index)=>{
      searchfile(from+"/"+file,to)
    })
  })
}else{
  fs.writefilesync(`${to}${name++}.html`, fs.readfilesync(from));//这里是执行文件的复制,下面的是大文件的复制
  //fs.writefilesync(to, fs.readfilesync(from));
  //fs.createreadstream(src).pipe(fs.createwritestream(dst));大文件复制
}
}

这里没有用ts来写,可能看上去有些凌乱,但是都写了注释,相信聪明的你一定看得懂。执行完代码后,复制就完成了,大功告成。

 

完全按照预想的结果,现在发现,即使我们是前端程序员,会点nodejs,还是蛮有用的,可以增强自己的成就感

总结

以上所述是小编给大家介绍的nodejs文件夹深层复制功能,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网