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

 更新时间:2015年05月28日 10:09:30   投稿:junjie   我要评论
这篇文章主要介绍了nodejs实现遍历文件夹并统计文件大小,下面使用nodejs的遍历文件夹文件内容,并且读取所有的文件,并采取排序往大到小的顺序进行输出,需要的朋友可以参考下

离开公司已经有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 的参数修改成你想要的路径,改变里面参数路径,即可以遍历文件夹的文件,并生成 一份文件。

文件数多的时候,建议采用强大一点文本编辑器,这样方便阅读。

下面是文件的大小

相关文章

  • Node.js之网络通讯模块实现浅析

    Node.js之网络通讯模块实现浅析

    本篇文章主要介绍了Node.js之网络通讯模块实现浅析,具有一定的参考价值,有兴趣的可以了解一下。
    2017-04-04
  • node.js中的fs.close方法使用说明

    node.js中的fs.close方法使用说明

    这篇文章主要介绍了node.js中的fs.close方法使用说明,本文介绍了fs.close方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • iOS + node.js使用Socket.IO框架进行实时通信示例

    iOS + node.js使用Socket.IO框架进行实时通信示例

    本篇文章主要介绍了iOS + node.js使用Socket.IO框架进行实时通信示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-04-04
  • node.js 开发指南 – Node.js 连接 MySQL 并进行数据库操作

    node.js 开发指南 – Node.js 连接 MySQL 并进行数据库操作

    通常在NodeJS开发中我们经常涉及到操作数据库,尤其是 MySQL ,作为应用最为广泛的开源数据库则成为我们的首选,本篇就来介绍下如何通过NodeJS来操作 MySQL 数据库。
    2014-07-07
  • 浅谈NodeJS中require路径问题

    浅谈NodeJS中require路径问题

    学习Nodejs也是出于对这个新产物的好奇,而且有两个重要项目也需要他的支持,所以要好好学学这个新语种。在nodejs中,模块大概可以分为核心模块和文件模块。核心模块是被编译成二进制代码,引用的时候只需require表示符即可
    2015-05-05
  • node.js使用免费的阿里云ip查询获取ip所在地【推荐】

    node.js使用免费的阿里云ip查询获取ip所在地【推荐】

    这篇文章主要介绍了node.js使用免费的阿里云ip查询获取ip所在地的相关知识,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2018-09-09
  • 浅析node应用的timing-attack安全漏洞

    浅析node应用的timing-attack安全漏洞

    本篇文章给大家通过原理的原因分析了node应用的timing-attack安全漏洞问题,有兴趣的朋友阅读参考下。
    2018-02-02
  • Node.js使用NodeMailer发送邮件实例代码

    Node.js使用NodeMailer发送邮件实例代码

    本篇文章主要介绍了Node.js使用NodeMailer发送邮件实例代码,具有一定的参考价值,有兴趣的可以了解一下。
    2017-03-03
  • 从零学习node.js之利用express搭建简易论坛(七)

    从零学习node.js之利用express搭建简易论坛(七)

    这篇文章主要介绍了node.js利用express搭建简易论坛的方法,我们需要搭建的这个简易的论坛主要的功能有:注册、登录、发布主题、回复主题。下面我们来一步步地讲解这个系统是如何实现的,需要的朋友可以参考借鉴。
    2017-02-02
  • node.js报错:Cannot find module ''ejs''的解决办法

    node.js报错:Cannot find module ''ejs''的解决办法

    最近发现了node.js居然报错了,错误提示为:Cannot find module 'ejs',后来找了找资料发现解决的方法其实很简单,下面通过这篇文章来一起看看吧,希望对同样遇到这个问题的朋友们能有所帮助。
    2016-12-12

最新评论