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 后缀名判断限制代码
Mar 31 NodeJs
nodejs入门详解(多篇文章结合)
Mar 07 NodeJs
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
Nov 18 NodeJs
Nodejs中解决cluster模块的多进程如何共享数据问题
Nov 10 NodeJs
nodejs根据ip数组在百度地图中进行定位
Mar 06 NodeJs
nodejs中模块定义实例详解
Mar 18 NodeJs
nodejs判断文件、文件夹是否存在及删除的方法
Nov 10 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
Jul 31 NodeJs
Nodejs处理异常操作示例
Dec 25 NodeJs
nodejs基础之常用工具模块util用法分析
Dec 26 NodeJs
NodeJs生成sitemap站点地图的方法示例
Jun 11 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购物网站支付paypal使用方法
2010/11/28 PHP
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
validator验证控件使用代码
2010/11/23 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
ztree获取当前选中节点子节点id集合的方法
2015/02/12 Javascript
jQuery标签编辑插件Tagit使用指南
2015/04/21 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
Vue中定义全局变量与常量的各种方式详解
2017/08/23 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
使用vue实现各类弹出框组件
2019/07/03 Javascript
[02:08]DOTA2英雄基础教程 马格纳斯
2014/01/17 DOTA
python对字典进行排序实例
2014/09/25 Python
在Gnumeric下使用Python脚本操作表格的教程
2015/04/14 Python
python写日志封装类实例
2015/06/28 Python
星球大战与Python之间的那些事
2016/01/07 Python
浅谈Python中带_的变量或函数命名
2017/12/04 Python
python开头的coding设置方法
2019/08/08 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
使用K.function()调试keras操作
2020/06/17 Python
美国滑雪板和装备购物网站:Skis.com
2018/12/20 全球购物
函授自我鉴定
2013/11/06 职场文书
岗位职责的定义
2013/11/10 职场文书
小学生安全责任书
2014/07/25 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
防卫过当辩护词
2015/05/21 职场文书
解析MySQL binlog
2021/06/11 MySQL