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实用示例 缩址还原
Dec 28 NodeJs
轻松创建nodejs服务器(10):处理POST请求
Dec 18 NodeJs
NodeJS使用formidable实现文件上传
Oct 27 NodeJs
Nodejs 获取时间加手机标识的32位标识实现代码
Mar 07 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
docker中编译nodejs并使用nginx启动
Jun 23 NodeJs
NodeJS自定义模块写法(详解)
Jun 27 NodeJs
使用nodejs+express实现简单的文件上传功能
Dec 27 NodeJs
Nodejs中crypto模块的安全知识讲解
Jan 03 NodeJs
nodejs简单实现TCP服务器端和客户端的聊天功能示例
Jan 04 NodeJs
详解Nodejs内存治理
May 13 NodeJs
Nodejs libuv运行原理详解
Aug 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
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
学习ExtJS fit布局使用说明
2009/10/08 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
2016/11/09 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
vuex实现及简略解析(小结)
2019/03/01 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
nodejs处理tcp连接的核心流程
2021/02/26 NodeJs
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
浅谈python中set使用
2016/06/30 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
Python2与Python3的区别详解
2020/02/09 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
美国旅游网站:Tours4Fun
2017/02/17 全球购物
附答案的Java面试题
2012/11/19 面试题
电子商务专业实习生自我鉴定
2013/09/24 职场文书
上学迟到的检讨书
2014/01/11 职场文书
甜点店创业计划书
2014/01/27 职场文书
学生党支部先进事迹
2014/02/04 职场文书
促销活动计划书
2014/05/02 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
商家认证委托书格式
2014/10/16 职场文书
节水宣传标语口号
2015/12/26 职场文书
golang goroutine顺序输出方式
2021/04/29 Golang