1. 程式人生 > >node.js初應用 建立目錄樹

node.js初應用 建立目錄樹

├─ 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)