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中SSL服务的性能
Jul 15 NodeJs
nodejs教程之入门
Nov 21 NodeJs
基于html5和nodejs相结合实现websocket即使通讯
Nov 19 NodeJs
Nodejs初级阶段之express
Nov 23 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
nodejs进阶(6)—连接MySQL数据库示例
Jan 07 NodeJs
详解NODEJS的http实现
Jan 04 NodeJs
Nodejs实现爬虫抓取数据实例解析
Jul 05 NodeJs
NodeJS实现同步的方法
Mar 02 NodeJs
nodeJs的安装与npm全局环境变量的配置详解
Jan 06 NodeJs
nodeJs项目在阿里云的简单部署
Nov 27 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
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
php面向对象全攻略 (十五) 多态的应用
2009/09/30 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
twig里使用js变量的方法
2016/02/05 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
js实现连个数字相加而不是拼接的方法
2014/02/23 Javascript
jQuery.position()方法获取不到值的安全替换方法
2015/03/13 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
python机器学习之决策树分类详解
2017/12/20 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
python自动化测试三部曲之request+django实现接口测试
2020/10/07 Python
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
电大毕业个人生自我鉴定
2014/03/26 职场文书
2014年信用社工作总结
2014/11/25 职场文书
JS数组方法some、every和find的使用详情
2021/10/05 Javascript
python分分钟绘制精美地图海报
2022/02/15 Python
python的html标准库
2022/04/29 Python