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 npm包管理的配置方法及常用命令介绍
Jun 05 NodeJs
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
Sep 26 NodeJs
Nodejs实现多人同时在线移动鼠标的小游戏分享
Dec 06 NodeJs
nodejs的HTML分析利器node-jquery用法浅析
Nov 08 NodeJs
nodejs个人博客开发第五步 分配数据
Apr 12 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 NodeJs
详解nodeJS之路径PATH模块
May 31 NodeJs
使用nodeJs来安装less及编译less文件为css文件的方法
Nov 20 NodeJs
nodejs基于WS模块实现WebSocket聊天功能的方法
Jan 12 NodeJs
手把手教你如何使用nodejs编写cli命令行
Nov 05 NodeJs
NodeJs之word文件生成与解析的实现代码
Apr 01 NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 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 checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
基于php验证码函数的使用示例
2013/05/03 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
心扬JS分页函数代码
2010/09/10 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
JQuery标签页效果的两个实例讲解(4)
2015/09/17 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
nodejs多版本管理总结
2018/04/03 NodeJs
vue弹窗组件使用方法
2018/04/28 Javascript
Vue自定义弹窗指令的实现代码
2018/08/13 Javascript
JS实现换肤功能的方法实例详解
2019/01/30 Javascript
element-ui 中使用upload多文件上传只请求一次接口
2019/07/19 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020/01/03 Javascript
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
利用Python开发微信支付的注意事项
2016/08/19 Python
tensorflow获取变量维度信息
2018/03/10 Python
Python多线程应用于自动化测试操作示例
2018/12/06 Python
python 通过类中一个方法获取另一个方法变量的实例
2019/01/22 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
python解释器安装教程的方法步骤
2020/07/02 Python
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
假日旅行社实习自我鉴定
2013/09/24 职场文书
班级道德讲堂实施方案
2014/02/24 职场文书
《夹竹桃》教学反思
2014/04/20 职场文书
旅游节目策划方案
2014/05/26 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
地道战观后感
2015/06/04 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
netty 实现tomcat的示例代码
2022/06/05 Servers