您好,登錄后才能下訂單哦!
前段時(shí)間接到領(lǐng)導(dǎo)要求,運(yùn)營那邊會(huì)時(shí)不時(shí)的給我一些.html文件,讓我呢把里面的某些東西給解析出來插入到數(shù)據(jù)庫。本來就是解析dom元素,然后插入,可是有點(diǎn)麻煩的是運(yùn)營給我的文件都是多層級(jí)的:比如下面的:
我所需要是將運(yùn)營給的文件夾中每個(gè)文件都復(fù)制到某個(gè)文件夾中(test),然后取test中所有文件進(jìn)行解析。開始的時(shí)候本人崩著能吃苦耐勞的精神,每次都是復(fù)制粘貼,可是這是容易出錯(cuò)不說,關(guān)鍵我們是個(gè)程序員啊,就應(yīng)該用程序員的方式來解決嘛。有些同志會(huì)說這很簡單啊 找到'E:819數(shù)據(jù)819'這個(gè)文件夾,將它內(nèi)部的每個(gè)文件夾讀出來組成一個(gè)數(shù)組,在循環(huán)遍歷里面的每個(gè)文件進(jìn)行復(fù)制就可以了啊
fs.readdir('E:/819數(shù)據(jù)/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)); }) }) }) })
這就是上面的代碼實(shí)現(xiàn),開始我也是圖省事就這樣寫了(把運(yùn)營同事給的文件夾中所有文件復(fù)制到我的test目錄中),可是mmp后來發(fā)現(xiàn)有的文件會(huì)有多重文件夾的嵌套
這時(shí)候就不能在一層的一層的判斷了,萬一運(yùn)營給的嵌套10層,總不能為了每個(gè)文件夾的復(fù)制寫一串代碼吧,這里只能使用遞歸來解析了。
let name = 1 copyItDigui('E:/819數(shù)據(jù)/819','E:/test/'); function copyItDigui(from, to) { searchFile(from, to); } function searchFile(from, to){ let stat = fs.lstatSync(from); if(stat.isDirectory()){//判斷是文件夾就繼續(xù)下面的遍歷,否則直接進(jìn)行文件的復(fù)制和重名了 fs.readdir(from,'utf-8',(err,fileList)=>{ fileList.forEach((file,index)=>{ searchFile(from+"/"+file,to) }) }) }else{ fs.writeFileSync(`${to}${name++}.html`, fs.readFileSync(from));//這里是執(zhí)行文件的復(fù)制,下面的是大文件的復(fù)制 //fs.writeFileSync(to, fs.readFileSync(from)); //fs.createReadStream(src).pipe(fs.createWriteStream(dst));大文件復(fù)制 } }
這里沒有用ts來寫,可能看上去有些凌亂,但是都寫了注釋,相信聰明的你一定看得懂。執(zhí)行完代碼后,復(fù)制就完成了,大功告成。
完全按照預(yù)想的結(jié)果,現(xiàn)在發(fā)現(xiàn),即使我們是前端程序員,會(huì)點(diǎn)nodejs,還是蠻有用的,可以增強(qiáng)自己的成就感
總結(jié)
以上所述是小編給大家介紹的nodejs文件夾深層復(fù)制功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)億速云網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。