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的require模块(文件模块/核心模块)及路径介绍
Jan 14 NodeJs
NodeJS的url截取模块url-extract的使用实例
Nov 18 NodeJs
使用nodejs、Python写的一个简易HTTP静态文件服务器
Jul 18 NodeJs
轻松创建nodejs服务器(5):事件处理程序
Dec 18 NodeJs
NodeJS实现阿里大鱼短信通知发送
Jan 17 NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 NodeJs
nodejs mysql 实现分页的方法
Jun 06 NodeJs
nodejs async异步常用函数总结(推荐)
Nov 17 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 NodeJs
详解nodejs 开发企业微信第三方应用入门教程
Mar 12 NodeJs
NodeJs内存占用过高的排查实战记录
May 10 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
PHP中simplexml_load_string函数使用说明
2011/01/01 PHP
php下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
PHP动态分页函数,PHP开发分页必备啦
2011/11/07 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
基于JQuery的密码强度验证代码
2010/03/01 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
微信小程序实现禁止分享代码实例
2019/10/19 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
2019/12/02 Javascript
JavaScript编码小技巧分享
2020/09/17 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
Python OpenCV实现视频分帧
2019/06/01 Python
python变量的存储原理详解
2019/07/10 Python
Python运行DLL文件的方法
2020/01/17 Python
水利学院求职自荐书
2014/02/01 职场文书
仓库文员岗位职责
2014/04/06 职场文书
美容院店长岗位职责
2014/04/08 职场文书
质量标语大全
2014/06/12 职场文书
纺织工程专业推荐信
2014/09/08 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android
MySQL实战记录之如何快速定位慢SQL
2022/03/23 MySQL
Win10 Anaconda安装python-pcl
2022/04/29 Servers