nodejs复制服务器文件,nodejs文件夹深层复制功能

nodejs文件夹深层复制功能

发布时间:2020-10-16 16:35:07

来源:脚本之家

阅读:116

作者:java_Android

前段时间接到领导要求,运营那边会时不时的给我一些.html文件,让我呢把里面的某些东西给解析出来插入到数据库。本来就是解析dom元素,然后插入,可是有点麻烦的是运营给我的文件都是多层级的:比如下面的:

c2d477690ca95f6b099694b3be979b78.png

2292925f053bf571cd851611099fb1aa.png

我所需要是将运营给的文件夹中每个文件都复制到某个文件夹中(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后来发现有的文件会有多重文件夹的嵌套

fa207f47b4c419a00a437747d82e6ad2.png

这时候就不能在一层的一层的判断了,万一运营给的嵌套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来写,可能看上去有些凌乱,但是都写了注释,相信聪明的你一定看得懂。执行完代码后,复制就完成了,大功告成。

70aa47a6a7140e1d78b803c79b8b3532.png

完全按照预想的结果,现在发现,即使我们是前端程序员,会点nodejs,还是蛮有用的,可以增强自己的成就感

总结

以上所述是小编给大家介绍的nodejs文件夹深层复制功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对亿速云网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442981.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

画出降维后的图片_有没有人能画出《三体》里太阳系被二维化的概念图?

按照 小夫子老男孩 答案中视频的思路,我自己画了几幅星球降维的效果图。【manim】降维打击可视化_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com视频中把三维降至二维的思路,是先设计一个「二维降至一维」的方案,然后把三维中的两维…

慧停车安装后显示服务器异常,智能停车场系统常见故障以及排除方法

原标题:智能停车场系统常见故障以及排除方法随着停车问题日益增多,很多住宅小区都基本安装了智能化的停车场系统,智能停车场系统一般由入口控制机、出口控制机、智能道闸、地感线圈、余位显示屏、图象识别设备、系统软件、管理工作站等组成。…

ios 自定义拍照页面_vivo X27只靠颜值和拍照吃饭?体验过后你也会被系统所折服...

说到vivo X27,相信很多小伙伴都会第一时间想到其帅气的颜值以及强悍的拍照!的确,就颜值来说,vivo X27凭借着升降式摄像头、零界全面屏、不凸出的后置三摄以及孔雀纹理的确称的上是2019年的最美旗舰;而拍照就更不用说了…

ipv4链路不通或服务器无响应,ping不通或丢包时如何进行链路测试?

Linux操作系统MTR介绍和使用安装MTR目前现有的Linux发行版本都预装了MTR,如果您的Linux云服务器没有安装MTR,则可以执行以下命令进行安装:CentOS 操作系统:yum install mtrUbuntu 操作系统:sudo apt-get install mtrMT…

consul 日志配置_Go语言微服务架构实战:第十一节 启动Consul

启动Consul安装配置好Consul以后,我们可以通过简单的命令启动consul。先来看最简单的启动方式:consul agent -dev在新终端中,执行如上操作。hongweiyulocalhost:~$ consul agent -dev > Starting Consul agent... > Consul agent runni…

vcm服务器如何修改端口,VCM2000是迈普协同通信解决方案的网管服务器.doc

VCM2000是迈普协同通信解决方案的网管服务器,提供友好的图形界面,功能强大、操作简单,能够对系统提供实时地配置、监控和管理。VCM2000采用采用组件化架构,同时集成网络管理和系统管理的优点,帮助用户实现网络运维从被…

chrome修改js数据怎么生效_chrome浏览器中 F12 功能的简单介绍

首先介绍Chrome开发者工具中,调试时使用最多的三个功能页面是:元素(ELements)、控制台(Console)、源代码(Sources),此外还有网络(Network)等。元素…

python split函数 空格_Python随笔29:Python基础编程练习题23~24

注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性。Python编程Python基础练习题23:求三角形斜边上的高输入直角三角形两直角边a、b的值,输出斜边上的高,最后结果使用round(x, 2) 函数四舍五入保留2位小数。输…

docker run后台启动命令_Docker-第五部分:15个 Docker 命令

原文作者:Jeff Hale原文地址:https://towardsdatascience.com/15-docker-commands-you-should-know-970ea5203421翻译:付新圆在这篇文章中,我们将学习15个Dockers CLI命令。如果你还不了解Docker,请查看这个系列的其他…

ospf 环回口的路由条目_路由策略之重分发示例分析

重分发示例网络拓扑解析:如图,R1-R2运行OSPF10,通过各自F0/0口建立ospf邻居,R1上静态路由:ip route 192.168.11.0 255.255.255.0 13.1.1.2ip route 192.168.13.0 255.255.255.0 13.1.1.2然后在ospf10进程下&#xff0c…

我国常用的投影坐标系_我国常用坐标系和高程系详解

北京54坐标系(BJZ54)北京54坐标系为参心大地坐标系,大地上的一点可用经度L54、纬度M54和大地高H54定位,它是以克拉索夫斯基椭球为基础,经局部平差后产生的坐标系。新中国成立以后,我国大地测量进入了全面发展时期,再全…

miniconda3 安装numpy_OpenCV4在Ubuntu1810/1604安装

本文简要介绍OpenCV4在Ubuntu 1810上的安装。目前OpenCV最新的稳定版本是4.0.1,可以从官网下载并解压,也可以从github上获取最新源码进行安装安装依赖sudo apt-get install cmake build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg…

idea前端可视化_IntelliJ IDE 开发Java GUI 入门

本博客主要对java 的GUI相关知识进行简单的介绍和总结,整个博客按照创建一个java GUI的顺序进行介绍,期间穿插讲解用到的java Swing的布局、控件等相关知识。本博客所进行的讲解及工程的创建等,都是基于Intellij IDEA进行操作的。转载请注明出…

载winpcap4.1.1_最常用的11个电缆载流量数据表,建议收藏备用

《0.6/1KV聚氯乙烯绝缘电力电缆载流量》《1~3芯额定电压0.6/1kv-1.8/3kv电缆载流量表》《YJV、YJY、YJV22额定电压在6/6、6/10kv电缆载流量》《常见BVVB型、BLVVB型、RVVB型电线载流量》《常见BV线载流量》《矿物质绝缘电缆载流量表》载流量数据表,是我们在日常工作…

android 虚拟键盘改变单个按键颜色_这款机械键盘很特别!一亿次按键寿命还有高颜值...

电脑主机要上RGB,那外设自然不能落下,虽说没有60%性能加成,用炫酷的灯光点亮桌面的感觉也是不错的。德国老牌外设品牌——冰豹(ROCCAT)2018年发布了Vulcan系列机械键盘,凭借着独特的设计和AIMO智能灯效颇受玩家好评。现在&#xf…

C++设计模式 #6 桥模式(Bridge)

动机 由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个变化的维度。 如何应对这种“多维度的变化”?如何利用面向对象技术来使得类型可以轻松地沿着两个乃至多个方向变化,而不引入额外的复杂度 举个栗子 我们…

c99什么意思_C语言中-是什么意思啊?

展开全部->是一个整体,它是用于指向结构体、C中的class等含有子数据的指针用e5a48de588b662616964757a686964616f31333366303130来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么…

mysql排序加权_mysql多关键词查询相关匹配加权排序

SELECT id, title, SUM((CASE WHEN title LIKE %复仇者% THEN 1 ELSE 0 END)(CASE WHEN title LIKE %联盟% THEN 1 ELSE 0 END)) as rnt FROM hash WHERE title LIKE %联盟% group by id ORDER by rnt DESC关键1.就是这个SUM()求和函数关键2.该SUM函数要搭配子句:gr…

mysql外键关联查询_MySQL外键约束和多表联查

一.创建外键#测试数据表# 教师表,主表CREATE TABLE teacher(id INT PRIMARY KEY AUTO_INCREMENT,name varchar(20),age INT)ENGINEInnoDB DEFAULT CHARSETUTF8;#测试数据:INSERT INTO teacher values(1,范冰冰,22),(2,周杰棍,30),(3,双杰伦,35),(4,梁朝伟…

mysql innodb id_MySQL InnoDB row_id边界溢出验证的方法步骤

背景跟同学聊到row_id一个边界问题,这里详细说明下。InnoDB表若没有定义主键,会使用系统的一个默认递增row_id (dict_sys->row_id)作为主键。每次插入一行加1,到达最大值循环复用。需要注意的是,虽然dict_sys->row_id 被定义…