node.js初應用 建立目錄樹
阿新 • • 發佈:2018-12-01
├─ hw
│ ├─dirtree.js
│ └─ test.js
├─test.js
└─ url.js
首先創建出來的樣子大概是這個樣子,在這裡我們先來整理下目錄樹的思路
獲取目標資料夾的目錄內容
將檔案或者資料夾進行劃分
將檔案或者資料夾進行列印,命令列console.log()
資料夾再次遍歷 deep1 ├─ deep2 │ ├─ deep3│ │ ├─
列印當前目錄樹
//引入 const fs=require('fs'); const path=require('path'); //目標目錄 let target=path.join(__dirname,'../../') //用function function loadTree(target,deep){ let prev=new Array(deep).join(' |') // 前面 | 字串 let dirinfo=fs.readdirSync(target); let files=[]; let dirs=[]; //儲存檔案或者資料夾 //接著開始遍歷檔案或者資料夾分開存貯 for(let i =0;i<dirinfo.length;i++){ let state=fs.statSync(path.join(target,dirinfo[i])) if (state.isFile()){ files.puth(dirinfo[i]) }else{ dirs.puth(dirinfo[i]) } } //檔案操作 for (let i=0;i<dirs.length;i++){ console.log(`${prev} ├─ ${dirs[i]}`) //遞迴 let nextPath =path.join(target,dirs[i]) let nextdeep=deep+1 //下一級的 檔案目錄 以及層級 loadTree(nextPath,nextdeep) //遞迴呼叫 } // 檔案操作 for (let i =files.length-1;i>=0;i--){ if(i===0){ console.log(`${prev} └─ ${files[i]}`) }else{ console.log(`${prev} ├─ ${files[i]}`) } } } loadTree(target,1) // deep 樣式 // 1 "├─" // 2 "| ├─" // 3 "| | ├─" // let str=new Array(1).join('| ') // console.log(str)