nodejs文件夹深层复制功能


Posted in NodeJs onSeptember 03, 2019

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

nodejs文件夹深层复制功能

nodejs文件夹深层复制功能

我所需要是将运营给的文件夹中每个文件都复制到某个文件夹中(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后来发现有的文件会有多重文件夹的嵌套

nodejs文件夹深层复制功能 

这时候就不能在一层的一层的判断了,万一运营给的嵌套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,还是蛮有用的,可以增强自己的成就感

总结

以上所述是小编给大家介绍的nodejs文件夹深层复制功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

NodeJs 相关文章推荐
nodejs教程之异步I/O
Nov 21 NodeJs
使用nodejs开发cli项目实例
Jun 03 NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
nodejs获取微信小程序带参数二维码实现代码
Apr 12 NodeJs
nodeJS实现路由功能实例代码
Jun 08 NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 NodeJs
nodejs中密码加密处理操作详解
Mar 20 NodeJs
nodejs 日志模块winston的使用方法
May 02 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 #NodeJs
nodejs简单抓包工具使用详解
Aug 23 #NodeJs
nodejs使用node-xlsx生成excel的方法示例
Aug 22 #NodeJs
Nodejs libuv运行原理详解
Aug 21 #NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 #NodeJs
Nodejs 识别图片类型的方法
Aug 15 #NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 #NodeJs
You might like
php GeoIP的使用教程
2011/03/09 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
php实现删除空目录的方法
2015/03/16 PHP
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
2015/11/25 Javascript
jQuery定义插件的方法
2015/12/18 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
详谈js中window.location.search的用法和作用
2017/02/13 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
2018/01/25 jQuery
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
2019/01/23 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
JavaScript中的类型检查
2020/02/03 Javascript
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
css3的transform造成z-index无效解决方案
2014/12/04 HTML / CSS
医护人员英文求职信范文
2013/11/26 职场文书
护理工作感言
2014/01/16 职场文书
古汉语文学求职信范文
2014/03/16 职场文书
三项教育活动实施方案
2014/03/30 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
天河观后感
2015/06/11 职场文书
消费者理赔投诉书
2015/07/02 职场文书