nodejs实现遍历文件夹并统计文件大小

这篇文章主要介绍了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 -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 的参数修改成你想要的路径,改变里面参数路径,即可以遍历文件夹的文件,并生成 一份文件。

文件数多的时候,建议采用强大一点文本编辑器,这样方便阅读。

下面是文件的大小

nodejs实现遍历文件夹并统计文件大小

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章