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的require模块(文件模块/核心模块)及路径介绍
Jan 14 NodeJs
nodejs中exports与module.exports的区别详细介绍
Jan 14 NodeJs
NodeJS使用formidable实现文件上传
Oct 27 NodeJs
学习 NodeJS 第八天:Socket 通讯实例
Dec 21 NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
nodejs socket实现的服务端和客户端功能示例
Jun 02 NodeJs
nodeJS微信分享
Dec 20 NodeJs
详解webpack打包nodejs项目(前端代码)
Sep 19 NodeJs
nodejs微信开发之接入指南
Mar 17 NodeJs
监控Nodejs的性能实例代码
Jul 02 NodeJs
nodejs对项目下所有空文件夹创建gitkeep的方法
Aug 02 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
2020最新CPU的性能排名
2020/04/02 数码科技
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
2006/10/09 PHP
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
2011/06/30 PHP
PHP使用mongoclient简单操作mongodb数据库示例
2019/02/08 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
图片翻转效果具体实现代码
2014/01/09 Javascript
jQuery实现的一个自定义Placeholder属性插件
2014/08/11 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
javascript中callee与caller的区别分析
2015/04/20 Javascript
js表单验证实例讲解
2016/03/31 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
iview table render集成switch开关的实例
2018/03/14 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
JS表格的动态操作完整示例
2020/01/13 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
Python subprocess模块常见用法分析
2018/06/12 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
10款最佳Python开发工具推荐,每一款都是神器
2020/10/15 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
2020/04/08 HTML / CSS
英国领先的狗和宠物美容专家:Christies Direct
2017/04/03 全球购物
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
NULL是什么,它是怎么定义的
2015/05/09 面试题
优秀实习自我鉴定
2013/12/04 职场文书
致长跑运动员加油稿
2014/02/20 职场文书
期末评语大全
2014/05/04 职场文书
工程造价专业求职信
2014/07/17 职场文书
2014年个人售房协议书
2014/10/30 职场文书
大连星海广场导游词
2015/02/10 职场文书
小学生安全教育心得体会
2016/01/15 职场文书
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技