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文件夹深层复制功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对亿速云网站的支持!

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值