nodejs 製做項目目錄樹代碼

// 遞歸目錄樹(只能用同步,用異步會出現後面的文件比前面的文件先輸出,順序會亂。)
// 默認按照ASCII碼的順序,例如js裏面的sort()函數。

// 先寫一層的狀況
// 抽象遞歸參數
// 找到突破點(避免死循環)
//   本身調本身,某種狀況(確定會存在的)不調用


const fs = require('fs');
const path = require('path');

// 獲取當前有沒有傳入目標路徑
var target = path.join(__dirname, process.argv[2] || './');

function load(target, depth) {
  // depth  0 = ''
  // depth  1 = '│ '
  // depth  2 = '│ │ '
  var prefix = new Array(depth + 1).join('│ ');// join()函數的妙用

  //  讀取一個目錄的內容,返回一個不包括 '.' 和 '..' 的文件名的數組。
  var dirinfos = fs.readdirSync(target);

  var dirs = [];
  var files = [];

  dirinfos.forEach(info=> {
  	// 返回一個 fs.Stats 實例
    var stats = fs.statSync(path.join(target, info));
    if (stats.isFile()) {
      files.push(info);
    } else {
      dirs.push(info);
    }
  });

  dirs.forEach(dir=> {
    console.log(`${prefix}├─${dir}`); // node_modules
    // 當前是一個目錄 須要深刻進去
    load(path.join(target, dir), depth + 1);
  });

  var count = files.length - 1;  // 此處必須-1與下面的count--想對應
  files.forEach(file=> {
    var temp = count-- ? '├' : '└';  // 三元運算符的妙用
    console.log(`${prefix}${temp}─${file}`);
  });
}


load(target, 0);
//

// 無級分類

flie.jsjavascript

 

node file.jsjava

 

依賴了 fsnode

相關文章
相關標籤/搜索