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 的 c++ module 链接到 OpenSSL
Aug 03 NodeJs
nodejs 整合kindEditor实现图片上传
Feb 03 NodeJs
NodeJS中利用Promise来封装异步函数
Feb 25 NodeJs
Nodejs进阶:基于express+multer的文件上传实例
Nov 21 NodeJs
nodeJS删除文件方法示例
Dec 25 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
基于nodejs 的多页面爬虫实例代码
May 31 NodeJs
Nodejs实现多房间简易聊天室功能
Jun 20 NodeJs
nodejs基于WS模块实现WebSocket聊天功能的方法
Jan 12 NodeJs
nodejs require js文件入口,在package.json中指定默认入口main方法
Oct 10 NodeJs
Nodejs让异步变成同步的方法
Mar 02 NodeJs
NodeJs 模仿SIP话机注册的方法
Jun 21 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
自动跳转中英文页面
2006/10/09 PHP
一个改进的UBB类
2006/10/09 PHP
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
php MessagePack介绍
2013/10/06 PHP
PHP引用(&)各种使用方法实例详解
2014/03/20 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
犀利的js 函数集合
2009/06/11 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
2016/12/08 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
python可视化实现代码
2019/01/15 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
巴西在线鞋店:Shoestock
2017/10/28 全球购物
.NET remoting中对象激活的两种方式
2015/06/08 面试题
遗体告别仪式答谢词
2014/01/23 职场文书
办公室主任竞聘演讲稿
2014/05/15 职场文书
贷款委托书怎么写
2014/08/02 职场文书
租房安全协议书
2014/08/20 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
党员转正意见怎么写
2015/06/03 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
2016年企业先进员工事迹材料
2016/02/25 职场文书
用python实现监控视频人数统计
2021/05/21 Python
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
Java数据结构之堆(优先队列)
2022/05/20 Java/Android