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中Buffer模块详解
Jan 07 NodeJs
NodeJS实现阿里大鱼短信通知发送
Jan 17 NodeJs
Nodejs中的this详解
Mar 26 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
nodejs实现的简单web服务器功能示例
Mar 15 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
详解NodeJs开发微信公众号
May 25 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
NodeJS模块与ES6模块系统语法及注意点详解
Jan 04 NodeJs
NodeJs操作MongoDB教程之分页功能以及常见问题
Apr 09 NodeJs
NodeJs生成sitemap站点地图的方法示例
Jun 11 NodeJs
Nodejs技巧之Exceljs表格操作用法示例
Nov 06 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
ASP知识讲座四
2006/10/09 PHP
建立动态的WML站点(三)
2006/10/09 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
2016/04/07 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
详解webpack解惑:require的五种用法
2017/06/09 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
JS实现字符串翻转的方法分析
2018/08/31 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
[02:06]2018完美世界全国高校联赛秋季赛开始报名(附彩蛋)
2018/09/03 DOTA
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
Python中装饰器的一个妙用
2015/02/08 Python
Python网络爬虫出现乱码问题的解决方法
2017/01/05 Python
Python中eval带来的潜在风险代码分析
2017/12/11 Python
python使用pandas实现数据分割实例代码
2018/01/25 Python
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
软件测试企业面试试卷
2016/07/13 面试题
电子商务专业毕业生自荐书
2014/06/22 职场文书
工伤事故证明
2014/10/20 职场文书
高一军训决心书
2015/02/05 职场文书
独生子女证明范本
2015/06/19 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python