Node.js遍历文件夹并统计文件大小

作者:后端茶话

时间:2026-10-29

浏览:635

本文介绍使用Node.js遍历文件夹并统计文件大小的方法。通过递归读取目录,获取所有文件信息并按大小排序,生成包含文件名、大小及路径的文本文件。该工具可用于前端项目优化,帮助快速定位大尺寸图片等资源文件,提升加载效率。

文章目录

背景与问题描述

离职两个多月后,回顾过往工作,曾开发不少工具。但在离职当天,我将过去一年积累的所有工具和代码全部格式化清除。今日想起项目中遇到的一个具体问题,特此记录。

在优化内存时,发现部分图片加载时loading状态迟迟不消失。经排查,部分技能图标尺寸仅为50x50像素,但图片文件体积却高达数MB。追溯路径发现,美术人员导出图标时未进行压缩,导致文件体积过大,进而引发加载缓慢、持续loading的问题。

项目中美术资源多达数千张,逐一排查极为耗时。利用空闲时间,尝试使用Node.js的文件系统API编写了一个小型Demo,成功满足了需求。该工具帮助快速定位问题图片,并通知美术人员修改,从而高效解决了问题。

统计文件大小是一项实用功能。前端团队可依据统计结果,针对性地压缩体积较大的图片。拥有数据参考后,定位问题变得十分便捷。

Node.js实现方案

接下来,使用Node.js遍历文件夹内容,读取所有文件,并按大小从大到小排序输出,最终生成一个已排序的文件列表。通过该文件,可以直观查看哪些文件体积较大。


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”);` 里的路径参数修改为你需要遍历的目标路径。更改参数后,即可遍历指定文件夹下的所有文件,并生成一份排序好的文件列表。

当文件数量较多时,建议使用功能更强大的文本编辑器打开结果文件,以便于阅读和查看。

以下是生成的文件大小列表示例。

背景与问题描述

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章