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服务器(6):作出响应
Dec 18 NodeJs
Windows系统下使用Sublime搭建nodejs环境
Apr 13 NodeJs
windows下安装nodejs及框架express
Aug 07 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
详解NodeJS框架express的路径映射(路由)功能及控制
Mar 24 NodeJs
nodejs个人博客开发第四步 数据模型
Apr 12 NodeJs
详解使用nodeJs安装Vue-cli
May 17 NodeJs
Nodejs搭建wss服务器教程
May 24 NodeJs
使用nodeJs来安装less及编译less文件为css文件的方法
Nov 20 NodeJs
nodejs中用npm初始化来创建package.json的实例讲解
Oct 10 NodeJs
NodeJS使用Range请求实现下载功能的方法示例
Oct 12 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 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循环检测目录是否存在并创建(循环创建目录)
2011/01/06 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
浅谈JavaScript的闭包函数
2016/12/08 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
微信小程序tabBar底部导航中文注解api详解
2017/08/16 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
Python中用字符串调用函数或方法示例代码
2017/08/04 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
简单了解python协程的相关知识
2019/08/31 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
keras实现theano和tensorflow训练的模型相互转换
2020/06/19 Python
深入了解Python 方法之类方法 &amp; 静态方法
2020/08/17 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
Maisons du Monde德国:法国家具和装饰的市场领导者
2019/07/26 全球购物
美国椅子和沙发制造商:La-Z-Boy
2020/10/25 全球购物
如何判断计算机可能已经中马
2013/03/22 面试题
编辑求职信样本
2013/12/16 职场文书
汽修专业自荐信
2014/07/07 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
大学生自荐材料范文
2014/12/30 职场文书