前段时间接到领导要求,运营那边会时不时的给我一些. html文件,让我呢把里面的某些东西给解析出来插入到数据库。本来就是解析dom元素,然后插入,可是有点麻烦的是运营给我的文件都是多层级的:比如下面的:
我所需要是将运营给的文件夹中每个文件都复制到某个文件夹中(测试),然后取测试中所有文件进行解析。开始的时候本人崩着能吃苦耐劳的精神,每次都是复制粘贴,可是这是容易出错不说,关键我们是个程序员啊,就应该用程序员的方式来解决嘛。有些同志会说这很简单啊找到E: 819数据819年这个文件夹,将它内部的每个文件夹读出来组成一个数组,在循环遍历里面的每个文件进行复制就可以了啊
fs.readdir (' E:/819数据/819”,“utf - 8”,(呃,文件列表)=祝辞{ fileList.forEach((文件、索引)=祝辞{ 让url=+ +文件'/' fs.readdir(+文件、“utf - 8”(错误,singleFile)=祝辞{ singleFile.forEach ((fileInner,我)=祝辞{ fs.writeFileSync(“${} ${名称+ +}。html的,fs.readFileSync (url + fileInner)); }) }) }) })
这就是上面的代码实现,开始我也是图省事就这样写了(把运营同事给的文件夹中所有文件复制到我的测试目录中),可是mmp后来发现有的文件会有多重文件夹的嵌套
让名字=1 copyItDigui (' E:/819数据/819 ',' E:/测试/'); 函数copyItDigui (,) { searchFile(从); } 函数searchFile (,) { 让统计=fs.lstatSync(从); 如果(stat.isDirectory()){//判断是文件夹就继续下面的遍历,否则直接进行文件的复制和重名了 fs.readdir(从“utf - 8”,(呃,文件列表)=祝辞{ fileList.forEach((文件、索引)=祝辞{ searchFile(从文件+ " +,) }) }) 其他}{ fs.writeFileSync(“${} ${名称+ +}。html的,fs.readFileSync());//这里是执行文件的复制、下面的是大文件的复制//fs。fs.readFileSync writeFileSync (());//fs.createReadStream (src) .pipe (fs.createWriteStream (dst));大文件复制 } }
这里没有用ts来写,可能看上去有些凌乱,但是都写了注释,相信聪明的你一定看得懂。执行完代码后,复制就完成了,大功告成。