nodejs實作遍歷資料夾並統計檔案大小_node.js
May 16, 2016 pm 03:57 PM
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 -1; else 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);
登入後複製
使用方法很簡單:將 var filesList = geFileList(“G:/nodejs”); 將getFileList 的參數修改成你想要的路徑,改變裡面參數路徑,也就是可以遍歷資料夾的文件,並產生 一份文件。
文件數多的時候,建議採用強大一點文字編輯器,這樣方便閱讀。
下面是檔案的大小
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)