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命令行参数处理模块commander使用实例
Sep 17 NodeJs
轻松创建nodejs服务器(3):代码模块化
Dec 18 NodeJs
轻松创建nodejs服务器(5):事件处理程序
Dec 18 NodeJs
详解NodeJs支付宝移动支付签名及验签
Jan 06 NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 NodeJs
用Nodejs搭建服务器访问html、css、JS等静态资源文件
Apr 28 NodeJs
Nodejs搭建wss服务器教程
May 24 NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
nodejs超出最大的调用栈错误问题
Dec 27 NodeJs
深入理解NodeJS 多进程和集群
Oct 17 NodeJs
M2实现Nodejs项目自动部署的方法步骤
May 05 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
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
javascript之更有效率的字符串替换
2008/08/02 Javascript
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
jQuery aminate方法定位到页面具体位置
2013/12/26 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
ArtEditor富文本编辑器增加表单提交功能
2016/04/18 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
2016/11/25 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
微信小程序调用摄像头隐藏式拍照功能
2018/08/22 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
[38:23]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第二场 11.01
2020/11/02 DOTA
python实现2014火车票查询代码分享
2014/01/10 Python
python解析xml文件实例分析
2015/05/27 Python
使用Python神器对付12306变态验证码
2016/01/05 Python
python编程线性回归代码示例
2017/12/07 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
加拿大时尚床上用品零售商:QE Home | Quilts Etc
2018/01/22 全球购物
澳大利亚排名第一的儿童在线玩具商店:Toy Galaxy
2018/10/06 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
事业单位接收函
2014/01/10 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
白酒市场营销方案
2014/02/25 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
法律专业自荐信
2014/06/03 职场文书
优秀大学生申请书
2019/06/24 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
mysql sql常用语句大全
2022/06/21 MySQL