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写的一个简单项目打包工具
May 11 NodeJs
Nodejs从有门道无门菜鸟起飞必看教程
Jul 20 NodeJs
NodeJs的fs读写删除移动监听
Apr 28 NodeJs
详解使用nodeJs安装Vue-cli
May 17 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
NodeJs中express框架的send()方法简介
Jun 20 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 NodeJs
修改Nodejs内置的npm默认配置路径方法
May 13 NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
ThinkPHP基本的增删查改操作实例教程
2014/08/22 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
深入浅析php json 格式控制
2015/12/24 PHP
微信支付扫码支付php版
2016/07/22 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
PHP实现简单的计算器
2020/08/28 PHP
IE8 浏览器Cookie的处理
2009/01/31 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
jQuery的ready方法详解
2014/11/27 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
七夕情人节丘比特射箭小游戏
2015/08/20 Javascript
轻松掌握JavaScript装饰者模式
2016/08/27 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
JS设计模式之惰性模式(二)
2017/09/29 Javascript
详解redis在nodejs中的应用
2018/05/02 NodeJs
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
vue模仿网易云音乐的单页面应用
2019/04/24 Javascript
vue3.0 搭建项目总结(详细步骤)
2019/05/20 Javascript
layer.alert自定义关闭回调事件的方法
2019/09/27 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
跟老齐学Python之网站的结构
2014/10/24 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
为什么python比较流行
2020/06/19 Python
彩色的非洲教学反思
2014/02/18 职场文书
党员干部公开承诺书
2014/03/26 职场文书
文体活动总结范文
2014/05/05 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
小学教研工作总结2015
2015/05/13 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
诚信高考倡议书
2019/06/24 职场文书
Html5生成验证码的示例代码
2021/05/10 Javascript