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


Posted in NodeJs onMay 28, 2015

离开公司已经有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实现遍历文件夹并统计文件大小

NodeJs 相关文章推荐
NodeJS学习笔记之Connect中间件模块(二)
Jan 27 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
浅谈NodeJS中require路径问题
May 07 NodeJs
nodejs读写json文件的简单方法(必看)
Mar 09 NodeJs
nodejs爬虫遇到的乱码问题汇总
Apr 07 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
基于Nodejs的Tcp封包和解包的理解
Sep 19 NodeJs
nodejs实现范围请求的实现代码
Oct 12 NodeJs
M2实现Nodejs项目自动部署的方法步骤
May 05 NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 NodeJs
如何利用nodejs实现命令行游戏
Nov 24 NodeJs
NodeJS配置CORS实现过程详解
Dec 02 NodeJs
nodejs实现获取某宝商品分类
May 28 #NodeJs
Nodejs实现批量下载妹纸图
May 28 #NodeJs
ubuntu下安装nodejs以及升级的办法
May 08 #NodeJs
浅谈NodeJS中require路径问题
May 07 #NodeJs
NodeJs中的VM模块详解
May 06 #NodeJs
nodejs简单实现中英文翻译
May 04 #NodeJs
nodejs调用cmd命令实现复制目录
May 04 #NodeJs
You might like
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
php array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
php 强制下载文件实现代码
2013/10/28 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
使用JS读秒使用示例
2013/09/21 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
layui select动态添加option的实例
2018/03/07 Javascript
详解Vue开发微信H5微信分享签名失败问题解决方案
2018/08/09 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
详解Angular cli配置过程记录
2019/11/07 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
详解Python中第三方库Faker
2020/09/25 Python
css3进阶之less实现星空动画的示例代码
2019/09/10 HTML / CSS
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
美国最大的在线水培用品商店:GrowersHouse.com
2018/08/14 全球购物
TUMI新加坡官网:国际领先的商旅箱包品牌
2019/01/12 全球购物
财务会计毕业生自荐信
2013/11/02 职场文书
总经理岗位职责描述
2014/02/08 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
校长新学期寄语2016
2015/12/04 职场文书
nginx日志格式分析和修改
2022/04/28 Servers
JS实现九宫格拼图游戏
2022/06/28 Javascript