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访问ActiveX对象,以操作Access数据库为例。
Dec 15 NodeJs
nodejs分页类代码分享
Jun 17 NodeJs
抛弃Nginx使用nodejs做反向代理服务器
Jul 17 NodeJs
基于NodeJS的前后端分离的思考与实践(五)多终端适配
Sep 26 NodeJs
Nodejs爬虫进阶教程之异步并发控制
Feb 15 NodeJs
NodeJS创建基础应用并应用模板引擎
Apr 12 NodeJs
nodejs个人博客开发第四步 数据模型
Apr 12 NodeJs
nodeJS实现路由功能实例代码
Jun 08 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 NodeJs
NodeJs入门教程之定时器和队列
Mar 08 NodeJs
基于nodejs的微信JS-SDK简单应用实现
May 21 NodeJs
typescript nodejs 依赖注入实现方法代码详解
Jul 21 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数组函数序列之array_key_exists() - 查找数组键名是否存在
2011/10/29 PHP
自定义php类(查找/修改)xml文档
2013/03/26 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
在Laravel的Model层做数据缓存的实现
2019/09/26 PHP
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
JavaScript生成的动态下雨背景效果实现方法
2015/02/25 Javascript
简单实现js选项卡切换效果
2016/02/03 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
jquery心形点赞关注效果的简单实现
2016/11/14 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
2017/04/17 Javascript
Angularjs自定义指令实现分页插件(DEMO)
2017/09/16 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
vue-cli开发环境实现跨域请求的方法
2018/04/07 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
2020/02/04 jQuery
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
python字符串编码识别模块chardet简单应用
2015/06/15 Python
详解Python如何获取列表(List)的中位数
2016/08/12 Python
Python实现线程状态监测简单示例
2018/03/28 Python
Django 大文件下载实现过程解析
2019/08/01 Python
Django框架模板用法入门教程
2019/11/04 Python
详解python tcp编程
2020/08/24 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
党员的自我评价范文
2014/01/02 职场文书
《猴子种树》教学反思
2014/02/14 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server
Python正则表达式中flags参数的实例详解
2022/04/01 Python