1. 程式人生 > >nodejs 遍歷資料夾檔案統計檔案大小

nodejs 遍歷資料夾檔案統計檔案大小

                     

離開公司已經有2個多個月,之前寫了不少工具,但在離開公司的當天,我親手把一年來的所有積累工具和程式碼都格式化了。今天想起之前在專案中遇到的一個問題,今天將其記錄下來。    我在優化記憶體的時候,遇到一些圖片在載入的時候很難loading出現,發現一些技能圖示,尺寸很小50x50,但是圖片的大小卻很大,有幾m,於是找到路徑,發現是美術輸出圖示的時候因為忘記壓縮導致圖示變得很大,所以導致加載出現不停loading現象出現。  專案里美術檔案也有幾千張那麼多,要一張張去找問題還真是一個體力活,當時利用空閒的時間嘗試一下nodejs 檔案系統的API拼湊寫了一個小demo,滿足了一下需求,很快找到問題所在,把有問題的圖片告訴美術修改過來。這樣子解決問題。

關於這個檔案統計大小是很實用,前端可以統計這些圖片有針對性地較大的圖片進行壓縮。因為有一個數據作參考可以很方便找到問題。

下面使用nodejs的 遍歷資料夾檔案內容,並且讀取所有的檔案,並採取排序往大到小的順序進行輸出,最後生成一個檔案,這個檔案已經排序好。可以看那些檔案是否有檔案。

    var fs = require('fs')//遍歷資料夾,獲取所有資料夾裡面的檔案資訊/* * @param path 路徑 * */function geFileList(path){   var filesList = [];   readFile(path,filesList);   return filesList;}//遍歷讀取檔案
function readFile(path,filesList){   files = fs.readdirSync(path);//需要用到同步讀取   files.forEach(walk);   function walk(file)   {          states = fs.statSync(path+'/'+file);                 if(states.isDirectory())        {            readFile(path+'/'+file,filesList);        }        else        {               //建立一個物件儲存資訊
            var obj = new Object();            obj.size = states.size;//檔案大小,以位元組為單位            obj.name = file;//檔名            obj.path = path+'/'+file; //檔案絕對路徑            filesList.push(obj);        }         }}//寫入檔案utf-8格式function writeFile(fileName,data){    fs.writeFile(fileName,data,'utf-8',complete);  function complete()  {     console.log("檔案生成成功");  } }var filesList = geFileList("G:/nodejs");filesList.sort(sortHandler);function sortHandler(a,b){  if(a.size > b.size)   return -1else if(a.size < b.size) return 1   return 0;}var str='';for(var i=0;i<filesList.length;i++){   var item = filesList[i];   var desc ="檔名:"+item.name + "  "        +"大小:"+(item.size/1024).toFixed(2) +"/kb"+"  "        +"路徑:"+item.path;   str+=desc +"\n"}writeFile("test.txt",str);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72

使用方法很簡單:將 var filesList = geFileList(“G:/nodejs”); 將getFileList 的引數修改成你想要的路徑,改變裡面引數路徑,即可以遍歷資料夾的檔案,並生成 一份檔案。 檔案數多的時候,建議採用強大一點文字編輯器,這樣方便閱讀。

下面是檔案的大小    這裡寫圖片描述