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极简入门教程(一):模块机制
Oct 25 NodeJs
解析NodeJs的调试方法
Dec 11 NodeJs
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
Dec 30 NodeJs
nodejs中向HTTP响应传送进程的输出
Mar 19 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
详解nodejs异步I/O和事件循环
Jun 07 NodeJs
Nodejs之http的表单提交
Jul 07 NodeJs
Nodejs 和 Electron ubuntu下快速安装过程
May 04 NodeJs
NodeJS 中Stream 的基本使用
Jul 30 NodeJs
nodejs异步编程基础之回调函数用法分析
Dec 26 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 NodeJs
nodejs对mongodb数据库的增加修删该查实例代码
Jan 05 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
1.PHP简介
2006/10/09 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
PHP 类商品秒杀计时实现代码
2010/05/05 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
利用javascript查看html源文件
2006/11/08 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
jQuery zTree 异步加载添加子节点重复问题
2017/11/29 jQuery
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
妙用缓存调用链实现JS方法的重载
2018/04/30 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
手把手教你写一个微信小程序(推荐)
2018/10/17 Javascript
vue移动端项目缓存问题实践记录
2018/10/29 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
利用Python演示数型数据结构的教程
2015/04/03 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
解决python flask中config配置管理的问题
2019/07/26 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
如何在django中运行scrapy框架
2020/04/22 Python
基于Python pyecharts实现多种图例代码解析
2020/08/10 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
2020/08/11 Python
用css3实现转换过渡和动画效果
2020/03/13 HTML / CSS
英国大码女性时装零售商:Evans
2018/08/29 全球购物
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
新驾驶员个人自我评价
2014/01/03 职场文书
五一劳动节慰问信
2015/02/14 职场文书
MyBatis 动态SQL全面详解
2021/10/05 MySQL