// 遞歸目錄樹(只能用同步,用異步會出現后面的文件比前面的文件先輸出,順序會亂。) // 默認按照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.js
node file.js
依賴了 fs
2019年8月12日10:11:39
做了優化 優化忽略目錄 代碼直接貼上
// 遞歸目錄樹(只能用同步,用異步會出現后面的文件比前面的文件先輸出,順序會亂。) // 默認按照ASCII碼的順序,例如js里面的sort()函數。 // 先寫一層的情況 // 抽象遞歸參數 // 找到突破點(避免死循環) // 自己調自己,某種情況(肯定會存在的)不調用 const fs = require('fs'); const path = require('path'); // 獲取當前有沒有傳入目標路徑 var target = path.join(__dirname, process.argv[2] || './'); function changstrs(str){ //D:\webnews\xzy\demo\node_modules\@babel\runtime\helpers let ss = ""; for(var s=0;s<str.length;s++){ let item = str[s]; if((item!="/" && item!="@") && item!=":"){ ss+=item; } } /* str.forEach((item,index)=>{ if((item!="/" && item!="@") && item!=":"){ ss+=item; } }) */ return ss; } function load(target, depth) { // depth 0 = '' // depth 1 = '│ ' // depth 2 = '│ │ ' var prefix = new Array(depth + 1).join('│ ');// join()函數的妙用 //console.log("target",target); //console.log("target",depth); let ssf = changstrs(target); if(ssf.indexOf("node_modules") != -1 ){//如果是npm包 return false; } // 讀取一個目錄的內容,返回一個不包括 '.' 和 '..' 的文件名的數組。 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); // // 無級分類
媽媽再也不怕項目交接不好寫文檔了 哈哈哈~~~